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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.02.2015, 20:42   #1
Елена909
Новичок
Джуниор
 
Регистрация: 02.02.2015
Сообщений: 1
Вопрос Arithmetic expression: Y= NaN

Здравствуйте.
Помогите решить следующую проблему:
После многократного запуска данной программы
Код:
Код:
program 2;
CONST		{исходные данные вводим как константы}
     x=3.4;
     j=1.65;
     a=0.5;
VAR
   ch,zn,y,d :real;	{числитель, знаменатель дроби, результат }
BEGIN
  ch:=ln(sqr(x+1))+1.5*exp(5*ln(x))+exp(1/4)*ln(a+0.6*exp(5*ln(10)))*1.35*exp(-8*ln(10));
  zn:=x*x+1.25*exp(-7*ln(10))*sqr(sin(j*j))+exp(1/3)*ln(a+0.6);
  d:=ch/zn;
  y:=arctan(ABS(d)/sqrt(1-d*d));
  WriteLn('Arithmetic expression: Y=',y:8:4);{вывод результатов на экран}
END.

Выдает ошибку
Arithmetic expression: Y= NaN

Последний раз редактировалось Stilet; 02.02.2015 в 21:48.
Елена909 вне форума Ответить с цитированием
Старый 02.02.2015, 21:04   #2
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Цитата:
Сообщение от Елена909 Посмотреть сообщение
...
После многократного запуска данной программы ...
Такую программу даже однократно не запустить
Код:
 program 2;
Не может быть в Паскале такого идентификатора - 2, ни для имени программы ни для чего.
Но если например
Код:
 program pr2;
и убрать лишний пробел в e xp(1/4), то откомпилируется и запустится. Но выдаст сообщение об ошибке. Это у меня , в Geany ( компилятор FPC), у вас может быть и NaN.
См - NaN
Так что проверяйте свои логарифмы и корни, скорее всего корень или в логарифм отрицательного числа.

PS Нашел.
У вас d больше 1. Примерно 58. Проверьте сами, измените тут
Код:
 d:=ch/zn;
// y:=arctan(ABS(d)/sqrt(1-d*d));  
 Writeln(d);
// WriteLn('Arithmetic expression: Y=',y:8:4);{вывод результатов на экран}
 END.
И получается под корнем отрицательное число, вот тут -
Код:
y:=arctan(ABS(d)/sqrt(1-d*d));

Последний раз редактировалось type_Oleg; 02.02.2015 в 21:15.
type_Oleg вне форума Ответить с цитированием
Старый 03.02.2015, 19:00   #3
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Цитата:
Сообщение от type_Oleg Посмотреть сообщение
Не может быть в Паскале такого идентификатора - 2, ни для имени программы ни для чего.
"Ни для чего" - это слишком. Идентификатором метки быть может.
Somebody вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Значение NAN nXs Общие вопросы Delphi 9 26.11.2011 20:54
Проверка на NaN (С/С++) Паскалька^^ Помощь студентам 1 26.03.2011 23:11
Нарисовать красивое окошко. Expression Design, Expression Blend. Векторное изображение. Casper-SC Фриланс 0 09.02.2011 17:59
Процедура выдает ошибку arithmetic exception numeric overflow or string truncation postaveche БД в Delphi 8 09.09.2010 13:20
NaN in Math Sibedir Общие вопросы Delphi 15 04.03.2008 06:58