Факториал числа - Pascal ABC

Узнай цену своей работы

Формулировка задачи:

Написал программу, которая считает факториал числа. Но считает она до максимального значения типа REAL. Как сделать, чтобы считался факториал для любого числа? (С массивами пока не знаком.)
Кто может помочь с решением проблемы? И можно ли решить без массивов?

Решение задачи: «Факториал числа»

textual
Листинг программы
Uses CRT;
var n:word;
    m, cnk, fac1, fac2, fac100:BigInteger;
    
  Function Factor(const n:word):BigInteger;
  var fct:BigInteger;
  begin
    fct:=1;
    for var i:=2 to n do
      fct:=fct*i;
    Factor:=fct;
   end;
 
begin
  m:=0;
  n:=100;
  WriteLn('n = ',n);
  fac100:=Factor(n);
  WriteLn('n! = ',fac100);
  for var k:=1 to n do
    begin
      Write('k = ',k:2);   
      fac1:=Factor(k);
      fac2:=Factor(n-k);
      cnk:=fac100/(fac1*fac2);
      WriteLn('   Cnk = ',cnk);
      m:=m+cnk;
     end;
  WriteLn;
  WriteLn('Result: ',m);
end.

Объяснение кода листинга программы

  1. Подключается библиотека CRT.
  2. Объявляются переменные n, m, cnk, fac1, fac2, fac100 типа BigInteger.
  3. Определяется функция Factor, которая принимает целочисленный параметр n и возвращает BigInteger.
  4. В функции Factor инициализируется переменная fct единицей.
  5. В цикле от 2 до n (inclusive) переменная fct умножается на текущее значение i.
  6. По завершении цикла значение fct присваивается переменной Factor.
  7. Выводится значение n.
  8. Вычисляется факториал n и выводится значение n!.
  9. Запускается цикл от 1 до n (inclusive).
  10. Внутри цикла выводятся значения k, fac1, fac2, cnk.
  11. Значение cnk вычисляется как частное от деления факториала n на произведение факториалов k и (n-k).
  12. Выводится значение cnk.
  13. Переменная m инициализируется значением 0.
  14. Цикл завершается.
  15. Выводится значение Result, которое равно сумме всех значений cnk.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.375 из 5
Похожие ответы