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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.11.2016, 14:35   #1
lloudb
Пользователь
 
Регистрация: 08.11.2016
Сообщений: 25
По умолчанию Ошибка NaN (Паскаль)

Почему выводит "бесконечность"? Где я допустил ошибку?
Код:
Код:
var 
  i:integer;
  z,d,x: double;
function F(n:integer): double;
  var
    s,i: integer;
  begin
    s:=1;
    for i:=1 to n do
      begin
        s:=s*i;
      end;
  end;
begin
  read(x);
  for i:=1 to 10 do
    begin
      z:=z+(exp(ln(x)*(2*i+1))/f(2*i+1));
      write(z,' ');
      d:=d+(exp(ln(x)*(2*i))/f(2*i));
      writeln(d);
    end;
  writeln(z/d);
end.
Вывод:
Код:
бесконечность бесконечность
бесконечность бесконечность
бесконечность бесконечность
бесконечность бесконечность
бесконечность бесконечность
бесконечность бесконечность
бесконечность бесконечность
бесконечность бесконечность
бесконечность бесконечность
бесконечность бесконечность
NaN
Задание:
Изображения
Тип файла: jpg math_model.JPG (11.8 Кб, 64 просмотров)
lloudb вне форума Ответить с цитированием
Старый 15.11.2016, 14:54   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А чего тот s делает в функции? Еще и Integer. Что так и выводится слово бесконечность? Ай да паскаль
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 15.11.2016, 15:09   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Что так и выводится слово бесконечность? Ай да паскаль
угу. я сам в шоке! прямо так и выводит. PascalABC.NET




Цитата:
Сообщение от lloudb Посмотреть сообщение
Где я допустил ошибку?
А кто будет возвращать значение функции факториала?! Пушкин?

Код:
function F(n:integer): double;
  var
    s,i: integer;
  begin
    s:=1;
    for i:=1 to n do
      begin
        s:=s*i;
      end;
    F := s  
  end;
p.s. а вообще, подобные задачи лучше решать через реккурентное соотношение (это когда следующий член ряда находится через предыдущий).
Это сложнее, нужно подумать, дроби поделить друг на друга, зато уходят всякие степени/логарифмы и факториалы...

Последний раз редактировалось Serge_Bliznykov; 15.11.2016 в 15:11.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 15.11.2016, 15:13   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Там бы еще у того злополучного s тип поменять, double например.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 15.11.2016, 15:16   #5
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

На прошлой неделе это же задание уже разбирали.
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 15.11.2016, 15:32   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Там бы еще у того злополучного s тип поменять, double например.
да, блин, конечно!!

прошляпил я!
Код:

function F(n:integer): double;
  var
    i: integer;
    s : double;
  begin
    s:=1.0;
    for i:=1 to n do
        s:=s*i;
    F := s  
  end;

Цитата:
Сообщение от Aleksandr H. Посмотреть сообщение
На прошлой неделе это же задание уже разбирали.
помню. но, видимо, плохо разбирали, раз у TC вопросы остались!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.11.2016, 14:26   #7
lloudb
Пользователь
 
Регистрация: 08.11.2016
Сообщений: 25
По умолчанию

Спасибо всем за ответы!

Ошибка заключалась в том, что я не возвратил функции значение.
lloudb вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль. Почему в результатах везде нули и что такое NaN frog1h Помощь студентам 3 27.10.2013 13:07
Ошибка nan (c++) bancocker Общие вопросы C/C++ 3 13.08.2012 21:20
Значение 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