Факториал факториала. Написать программу для вычисления - 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
, и выводится на экран. - Если произошло переполнение, выводится сообщение об ошибке.
- Программа завершается чтением строки.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д