Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 21.02.2011, 17:12   #1
Анастасия18
Пользователь
 
Регистрация: 13.02.2011
Сообщений: 16
По умолчанию Паскаль

Добрый день! Помогите пожалуйста разобраться в чем ошибка.. Вот задача: Необходимо вывести на экран таблицу значений функции Y(x) и ее разложения в ряд S(x) для x изменяющихся от xn до xk (xn, xk - вводятся с клавиатуры) с шагом h=(xk-xn)/10.
Program lab1;
Uses crt;
Var xn, xk, h, yx, sx:real;
Z:integer;
Function fact(n:integer):longint;
begin
fact:=n*fact(n-1);
end;
Function Sum(a:real):real;
Var a, S:real;
n:integer;
f:=longint;
Begin
for n:=0 to Z do
begin
f:=fact(2*n);
S:=S+(exp(ln(a)*2*n))/f;
end;
Sum:=S;
End;
BEGIN
clrscr;
write ('Введите начальное значение x=');
readln (xn);
write ('Введите конечное значение x=');
readln (xk);
write ('Введите Z=');
readln (Z);
h:=(xk-xn)/10.0;
while xn<=xk do
begin
yx:=(exp(xn)+exp(-xn))/2;
sx:=Sum(xn);
writeln ('при x='xn:2:1, 'Y(x)=',yx:2:10, 'S(x)=',sx:2:10);
xn:=xn+h;
end;
readln;
END.
Он выдает ошибку Error 202: Stack overflow error
Анастасия18 вне форума
Старый 21.02.2011, 17:21   #2
Д_М
Пользователь
 
Регистрация: 02.02.2011
Сообщений: 92
По умолчанию

Бесконечная рекурсия при вычислении факториала.

Надо написать что-то вроде

if(n<=1) fact := 1;
else fact := n * fact(n-1);

Изв, на паскале не пишу, может чего с синтаксисом напутал, но идея, надеюсь, ясна.
Д_М вне форума
Старый 21.02.2011, 20:18   #3
Анастасия18
Пользователь
 
Регистрация: 13.02.2011
Сообщений: 16
По умолчанию

Исправила, но он теперь выдает ошибку Error 205: Floating point overflow.
Анастасия18 вне форума
Старый 21.02.2011, 22:52   #4
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Цитата:
Сообщение от Анастасия18 Посмотреть сообщение
Исправила, но он теперь выдает ошибку Error 205: Floating point overflow.
Возможно, он выдаёт такую ошибку из-за того, что действительная переменная (с плавающей точкой) становится слишком большой для своего диапазона (типа) (например, тип Real).

P.S. Пожалуйста, в следующий раз оформляйте ваш код с использованием кнопочки , делайте отступы между строк (отступы должны быть логически оправданы).
Нам неудобно читать, а у вас меньше шансов, что вам (быстро) помогут.
Вадим Мошев вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль, Борланд Паскаль-в чем разница??? Vremya-Dengy Паскаль, Turbo Pascal, PascalABC.NET 13 31.05.2011 18:23
Паскаль Twisti Помощь студентам 1 07.12.2010 11:35
Паскаль Twisti Паскаль, Turbo Pascal, PascalABC.NET 0 06.12.2010 21:22
Паскаль Vanta11a Помощь студентам 2 28.05.2008 16:27