Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Проблема с программой на Pascal (http://www.tehnari.ru/f41/t41923/)

FPS 12.11.2010 00:01

Проблема с программой на 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, то компилируется, но не запускается, подскажите плз как правильно сделать...

MrSTEP 12.11.2010 00:09

ни разу не встречал типа cardinal. И попробуйте после Ctrl+F9 нажать Alt+F5, что бы просмотреть результат. Вероятно, программа запускается, выполняет свою работу и закрывается

Vladimir_S 12.11.2010 10:42

Цитата:

Сообщение от MrSTEP (Сообщение 416764)
ни разу не встречал типа cardinal.

Есть такой. Это целый тип, который относится к LongInt так же, как Word к Integer, т.е. сохраняя размер, "сдвигается" в сторону исключительно неотрицательных значений. Короче говоря, интервал Cardinal есть
0..4294967295.
Понимается не всеми трансляторами. Мой любимый DOS Free Pascal, например, глотает его и не давится, но в других действительно могут быть проблемы.
Только вот напрочь непонятно, на кой он в этой программе сдался: тут вполне и типа Word хватит.
Цитата:

Сообщение от FPS (Сообщение 416762)
В паскале пишет, что 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.

Я не проверял самО решение задачи, а лишь подчистил форматы вывода и добавил останов в конце. Попробуйте.

FPS 12.11.2010 16:19

Vladimir_S, большое спасибо, теперь всё работает:tehnari_ru_288:

Vladimir_S 12.11.2010 16:26

Цитата:

Сообщение от FPS (Сообщение 416973)
Vladimir_S, большое спасибо, теперь всё работает:tehnari_ru_288:

Ну и ладушки.


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

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.