Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 12.11.2010, 00:01   #1 (permalink)
FPS
Member
 
Регистрация: 11.11.2010
Сообщений: 17
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
Exclamation Проблема с программой на Pascal

Всем доброго времени суток.
Вот задание: Вычислить и вывести на экран в виде таблицы значения функции, заданной с помощью ряда Тейлора, на интервале от Xнач до Xкон с шагом dx с точностью E. Таблицу снабдить заголовком и шапкой. Каждая строка таблицы должна содержать значение аргумента, значение функции и количество просуммированных членов ряда.

Вот что имеем
Цитата:
program v6;
var
X :double;
dividend :double;
factor :double;
Xmin :double;
Xmax :double;
dx :double;
N :cardinal;
R :double;
tmp :double;
E :double;
begin
Xmin:=1;
Xmax:=10;
dx:=0.5;
E:=0.00001;
writeln;
writeln('Xmin = ':8, Xmin:10:6);
writeln('Xmax = ':8, Xmax:10:6);
writeln('dx = ':8, dx:10:6);
writeln('E = ':8, E:10:6);
writeln;
writeln('+--------------------------+--------------------------+--------------------------+');
writeln('l Znachenie argumenta X l Summa ryda R l Chislo Chlenov Summi l');
writeln('+--------------------------+--------------------------+--------------------------+');
X:= Xmin;
while (x<= Xmax) do begin
N:= 0;
factor:= 1;
dividend:= 1;
R:= 0;
repeat
tmp:= dividend/factor;
if tmp < E then break;
R:= R+tmp;
N:= N+1;
factor:= factor*N;
dividend:= dividend*X;
until false;
writeln('l ', X:24,' l ', R:24,' l ', N:24, ' l ');
X:= X+dx;
end;
writeln('+--------------------------+--------------------------+--------------------------+');
end.
В паскале пишет, что Cardinal - Unknown Identifier. А если Cardinal заменить например на Integer, то компилируется, но не запускается, подскажите плз как правильно сделать...
FPS вне форума   Ответить с цитированием

Старый 12.11.2010, 00:01
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Посмотрите в этих темах, возможно там есть нужный ответ

Проблема с программой mIRC
Проблема с программой тренажёром

Старый 12.11.2010, 00:09   #2 (permalink)
MrSTEP
一步一步地会到目的
 
Аватар для MrSTEP
 
Регистрация: 09.05.2009
Адрес: Черноземье
Сообщений: 10,939
Записей в дневнике: 10
Сказал(а) спасибо: 140
Поблагодарили 80 раз(а) в 33 сообщениях
Репутация: 28362
По умолчанию

ни разу не встречал типа cardinal. И попробуйте после Ctrl+F9 нажать Alt+F5, что бы просмотреть результат. Вероятно, программа запускается, выполняет свою работу и закрывается
MrSTEP вне форума   Ответить с цитированием
Старый 12.11.2010, 10:42   #3 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от MrSTEP Посмотреть сообщение
ни разу не встречал типа cardinal.
Есть такой. Это целый тип, который относится к LongInt так же, как Word к Integer, т.е. сохраняя размер, "сдвигается" в сторону исключительно неотрицательных значений. Короче говоря, интервал Cardinal есть
0..4294967295.
Понимается не всеми трансляторами. Мой любимый DOS Free Pascal, например, глотает его и не давится, но в других действительно могут быть проблемы.
Только вот напрочь непонятно, на кой он в этой программе сдался: тут вполне и типа Word хватит.
Цитата:
Сообщение от FPS Посмотреть сообщение
В паскале пишет, что Cardinal - Unknown Identifier. А если Cardinal заменить например на Integer, то компилируется, но не запускается, подскажите плз как правильно сделать...
Код:
program v6;
var
 X :double;
 dividend :double;
 factor :double;
 Xmin :double;
 Xmax :double;
 dx :double;
 N :word;
 R :double;
 tmp :double;
 E :double;
begin
 Xmin:=1;
 Xmax:=10;
 dx:=0.5;
 E:=0.00001;
 writeln;
 writeln('Xmin = ':8, Xmin:10:6);
 writeln('Xmax = ':8, Xmax:10:6);
 writeln('dx = ':8, dx:10:6);
 writeln('E = ':8, E:10:6);
 writeln;
 writeln('+-----------------------+--------------+----------------------+');
 writeln('l Znachenie argumenta X l Summa ryda R l Chislo Chlenov Summi l');
 writeln('+-----------------------+--------------+----------------------+');
 X:= Xmin;
 while (x<= Xmax) do
  begin
   N:= 0;
   factor:= 1;
   dividend:= 1;
   R:= 0;
   repeat
    tmp:= dividend/factor;
    if tmp < E then break;
    R:= R+tmp;
    N:= N+1;
    factor:= factor*N;
    dividend:= dividend*X;
   until false;
   writeln('l ', X:12:1,'          l ', R:12:2,' l ', N:10, '           l ');
   X:= X+dx;
  end;
 writeln('+-----------------------+--------------+----------------------+');
 ReadLn;
end.
Я не проверял самО решение задачи, а лишь подчистил форматы вывода и добавил останов в конце. Попробуйте.
Vladimir_S вне форума   Ответить с цитированием
Старый 12.11.2010, 16:19   #4 (permalink)
FPS
Member
 
Регистрация: 11.11.2010
Сообщений: 17
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Vladimir_S, большое спасибо, теперь всё работает
FPS вне форума   Ответить с цитированием
Старый 12.11.2010, 16:26   #5 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от FPS Посмотреть сообщение
Vladimir_S, большое спасибо, теперь всё работает
Ну и ладушки.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 04:21.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.