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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.10.2017, 16:19   #1
d3admau5
Новичок
Джуниор
 
Регистрация: 10.10.2017
Сообщений: 4
Печаль NaN в Pascal

Выводит в ответе строчку с NaN, что нужно прописать чтоб вообще всю эту строчку(подчеркнутую красной линией) убрать из ответа?
Изображения
Тип файла: jpg 111.jpg (82.3 Кб, 141 просмотров)
d3admau5 вне форума Ответить с цитированием
Старый 10.10.2017, 16:48   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

картинка, это, конечно, хорошо. но код программы надо выкладывать на форум в виде текста.


Цитата:
Сообщение от d3admau5 Посмотреть сообщение
что нужно прописать чтоб вообще всю эту строчку(подчеркнутую красной линией) убрать из ответа?
да не вопрос:
Код:
if (v>0) and (abs(power(abs(v-4),1/5))>0.0001) then begin
  P:=min(......);
  writeLn(' x= '......
end;
x := x + H
Serge_Bliznykov вне форума Ответить с цитированием
Старый 10.10.2017, 17:33   #3
d3admau5
Новичок
Джуниор
 
Регистрация: 10.10.2017
Сообщений: 4
По умолчанию

так?
program lab3; //Мусин В17 МО-17-10
const a=1.35; xmin=-2; xmax=4; H=0.5;
var P, v, x: real;
begin
x:=xmin;
repeat
if (x<=0.1) and (x>0) then v:=power(x+2,1/3)+sqr(sin(x));
if (x<0) then v:=power(x+2,1/3)+sqr(sin(x));
if (v>0) and (abs(power(abs(v-4),1/5))>0.0001) then begin
P:=min(x,a)*ln(v)/power(abs(v-4),1/5);
writeln(' x=',x:5:2,' v=',v:5:2,' P=',P:5:2);
x:=x+H;
end;
until(x>xmax);
end.
d3admau5 вне форума Ответить с цитированием
Старый 10.10.2017, 17:50   #4
d3admau5
Новичок
Джуниор
 
Регистрация: 10.10.2017
Сообщений: 4
По умолчанию

abs(power(abs(v-4),1/5) >0.0001 почему именно 0.0001 можете объяснить?
d3admau5 вне форума Ответить с цитированием
Старый 10.10.2017, 17:51   #5
d3admau5
Новичок
Джуниор
 
Регистрация: 10.10.2017
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
картинка, это, конечно, хорошо. но код программы надо выкладывать на форум в виде текста.



да не вопрос:
Код:
if (v>0) and (abs(power(abs(v-4),1/5))>0.0001) then begin
  P:=min(......);
  writeLn(' x= '......
end;
x := x + H
abs(power(abs(v-4),1/5) >0.0001 почему именно 0.0001 можете объяснить?
d3admau5 вне форума Ответить с цитированием
Старый 10.10.2017, 23:38   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от d3admau5 Посмотреть сообщение
почему именно 0.0001
бесконечно малая величина.
можно вместо неё взять 0.0000001
можно даже просто написать:
>0
но в этом случае, если получится очень малая величина, стремящаяся к нулю, то при делении на неё получим величину, стремящуюся к бесконечности (а это и есть NaN)


Цитата:
Сообщение от d3admau5 Посмотреть сообщение
так?

Код:
if (v>0) and (abs(power(abs(v-4),1/5))>0.0001) then begin
P:=min(x,a)*ln(v)/power(abs(v-4),1/5);
writeln(' x=',x:5:2,' v=',v:5:2,' P=',P:5:2);
x:=x+H;
end;
until(x>xmax);
нет. наращивать переменную цикла надо за пределами условия - иначе получите бесконечный цикл.

надо так:
Код:
  if (v>0) and (abs(power(abs(v-4),1/5))>0.0001) then begin
     P:=min(x,a)*ln(v)/power(abs(v-4),1/5);
     writeln(' x=',x:5:2,' v=',v:5:2,' P=',P:5:2);
  end;
  x:=x+H;
until(x>xmax);
разницу видите?
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка NaN (Pascal) lloudb Помощь студентам 4 18.12.2016 21:23
Вещественной число NAN (Pascal) leiprechain Помощь студентам 10 25.03.2012 01:51
Значение NAN nXs Общие вопросы Delphi 9 26.11.2011 20:54
Проверка на NaN (С/С++) Паскалька^^ Помощь студентам 1 26.03.2011 23:11
Выдаёт NAN DM_bite Помощь студентам 2 26.08.2008 20:52