Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль

Купить рекламу на форуме 15-35 тыс рублей в месяц

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

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

           Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
           И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - https://clck.ru/fCqwP

Ответ
 
Опции темы Поиск в этой теме
Старый 18.11.2011, 15:21   #1
tasashe
Новичок
Джуниор
 
Регистрация: 18.11.2011
Сообщений: 2
По умолчанию Посчитать факториал и биномиальный коэффициент (Delphi)

Помогите найти ошибку!
Запускаю программу, она выводит The program was run... тут же вылетает.
Что делаю не так?
Функция fact считает факториал, а count - биномиальный коэффициент.

Код:
program Project3;
{$APPTYPE CONSOLE}
uses 
  SysUtils,
  Math;
var i: integer;
  sum, con: extended;

function fact(n: longint): longint;
begin 
  if (n = 0) or (n = 1)
     then 
    fact := 1
       else 
    fact := n * fact(n - 1);
   end ;

function count(k, n: longint): extended;
begin 
  if (k = 0) or (k = n)
     then 
    count := 1
       else 
    count := fact(n) / (fact(k) * fact(n - k));
   end ;

begin 
  writeln('The program was run...');
  sum := 0;
  con := count(35, 48) * 47;
  for i := 0 to 35 do 
    begin 
    writeln('Now ', i, ' iteration running;');
    sum := sum + count(35 - i, 40) * count(i, 8) * (45 - i) / con;
    writeln('Now ', i, ' iteration complated;');
    writeln(' ');
     end ;
  writeln('The sum is: ', sum: 10: 8);
  readln;
end.

_________
1) Название темы должно адекватно отражать суть решаемой задачи/проблемы.
На первый раз я исправил.
В дальнейшем темы с подобным названием будут закрываться/удаляться.


2) Кто Вас учил так форматировать и вставлять код на форум?!!!
Код на форуме нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!


Модератор.

Последний раз редактировалось Serge_Bliznykov; 18.11.2011 в 15:54.
tasashe вне форума Ответить с цитированием
Старый 18.11.2011, 15:58   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,260
По умолчанию

проблема в том, что Ваших типов данных банально не хватает, чтобы вместить те цифры, которые у Вас там получаются в ходе расчётов.

например, сразу же, на первой итерации у Вас идёт вычисление fact(n) при n=40
40! = 81591528324789773434561126959611589 4272000000000

типа LongInt явно не хватает для данного числа...


p.s. включите в опциях компилятора Range Check Error
это, конечно, не решит проблему, но Вы хоть увидете, где она возникает...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 18.11.2011, 16:07   #3
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

самое смешное происходит, котогда i становится = 9, вызывается count(9, 8), который вызывает fact(-1), после чего fact() уходит в глубокое исследование глубины стека
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 18.11.2011, 18:10   #4
tasashe
Новичок
Джуниор
 
Регистрация: 18.11.2011
Сообщений: 2
По умолчанию

Да, i=9 это плохо. Решал пример, вывел формулу вычисления вероятности,а она вон какая получилась. Буду перерешивать. Спасибо за помощь!

Формулу я исправлю, но факториал всё равно так не посчитать. Есть идея попробовать вычислить биномиальный коэффициент через предыдущие по формуле .
Чуть позже попробую.
На самую верхнюю формулу в картинке не обращайте внимания!

Последний раз редактировалось tasashe; 18.11.2011 в 18:49.
tasashe вне форума Ответить с цитированием
Ответ

           Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
           Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
коэффициент масштабирования zolman Помощь студентам 0 13.04.2011 11:44
Как посчитать факториал числа в формуле? bloodargus Общие вопросы C/C++ 4 09.10.2010 11:27
Коэффициент похожести Konstantin_Z Microsoft Office Excel 20 06.10.2008 09:49
математическ функции в Delphi - факториал... Иринкаа Помощь студентам 5 26.03.2008 21:59
Факториал числа в Delphi Prisian Общие вопросы Delphi 16 24.01.2008 13:23