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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.03.2010, 11:52   #1
nolz
Пользователь
 
Регистрация: 30.08.2009
Сообщений: 35
По умолчанию Ошибка деления на ноль

Код:
function fact(x:integer):integer;     
var otv,i:integer;                  
begin                                
   otv:=1;                            
   for i:=1 to x do otv:=otv*i;       
   fact:=otv;                         
end;
Как видно из кода функции, 0 здесь не получается.

Код:
   for k:=1 to 100 do Pk[k]:=step(y,k)*exp(y*(-1))/fact(k);
И здесь, при исплоьзовании функции fact тоже, однако Delphi выдаёт ошибку в этой строке:"Floating point division by zero".
В чём проблема, и как этого избежать?
nolz вне форума Ответить с цитированием
Старый 07.03.2010, 12:30   #2
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,689
По умолчанию

100! огромное число и равно примерно 10^158
max integer (Delphi) чуть больше 2*10^9, т.е. 13! уже вычисляется не верно и в силу переполнения типа в некоторый момент может быть равным нулю.
Вместо integer надо использовать другие типы. Для 100! из стандартных остается только вещественные типы real или extended.
Код:
function fact(x:integer):extended;
var
  otv:extended;
  i: integer;
begin
   otv:=1;
   for i:=1 to x do otv:=otv*i;
   fact:=otv;
end;
eoln вне форума Ответить с цитированием
Старый 07.03.2010, 12:33   #3
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

у тебя при k=100 ф-я fact(k) вернет 0(большое число для int), отсюда деление на ноль
NiCola999 вне форума Ответить с цитированием
Старый 07.03.2010, 13:14   #4
nolz
Пользователь
 
Регистрация: 30.08.2009
Сообщений: 35
По умолчанию

Заработало, спасибо всем большое.
nolz вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Игра,угадай задуманное число,Ошибка деления на ноль!!! Rid Помощь студентам 4 22.10.2009 21:12
Ноль Байт, хранение в памяти... heart Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 12 20.04.2009 13:28
Деление на ноль Bearw08 Свободное общение 26 18.03.2009 18:39
Деление на ноль! Hacker19_90 Паскаль, Turbo Pascal, PascalABC.NET 7 01.10.2008 22:59
Проверка деления на ноль (Как проверить?) Moonka Помощь студентам 10 23.04.2007 19:41