Факториал факториала. Написать программу для вычисления - Free Pascal
Формулировка задачи:
Всем привет. В общем, необходимо написать программу для вычисления данного выражения. Написал уже на многих форумах, ответов почти не было. Буду премного благодарен за любую помощь, ибо спросить больше не у кого. Заранее благодарю!
Решение задачи: «Факториал факториала. Написать программу для вычисления»
textual
Листинг программы
- var overflow: boolean = false; //глобальная переменная!
- procedure read_q(s: string; var x: extended);
- begin
- repeat
- write(s, ' - неотрицательное целое; ', s, ' = ');
- readln(x)
- until x >= 0
- end;
- function f(n: extended; k: integer): extended;
- var p: extended;
- begin
- Result := 1;
- overflow := overflow or (n > 1750);
- if not overflow
- then while n > 1 do
- begin
- Result *= n;
- n -= k
- end;
- end;
- function fact(n: extended): extended;
- begin Result := f(n, 1) end;
- function dfact(n: extended): extended;
- begin Result := f(n, 2) end;
- var m, n, y: extended;
- begin
- read_q('m', m);
- read_q('n', n);
- y := fact(m);
- if not overflow
- then if n < y
- then writeln('Выражение не определено')
- else begin
- y := fact(n - y) / (fact(m) + dfact(n)) + dfact(m);
- if not overflow then writeln('y = ', y)
- end;
- if overflow then writeln('Переполнение');
- readln
- end.
Объяснение кода листинга программы
- Глобальная переменная
overflow
инициализируется значением false. - В функции
read_q
происходит чтение входных данных, пока они не станут отрицательными, и выводится сообщение об ошибке, если число отрицательное. - В функции
f
используется цикл, который продолжает умножать число на n, пока n больше 1. Если n становится равным 1, цикл завершается. Переменнаяoverflow
устанавливается в true, если n больше 1750. - Функция
fact
вызывает функциюf
с аргументом 1, чтобы вычислить факториал числа. - Функция
dfact
вызывает функциюf
с аргументом 2, чтобы вычислить двойной факториал числа. - В основной программе вводятся значения для переменных m и n, используя функцию
read_q
. - Вычисляется факториал числа m и сохраняется в переменной
y
. - Если n меньше, чем y, выводится сообщение об ошибке.
- Иначе вычисляется новое значение y, используя функции
fact
иdfact
, и выводится на экран. - Если произошло переполнение, выводится сообщение об ошибке.
- Программа завершается чтением строки.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д