Факториал факториала. Написать программу для вычисления - Free Pascal

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

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

Всем привет. В общем, необходимо написать программу для вычисления данного выражения. Написал уже на многих форумах, ответов почти не было. Буду премного благодарен за любую помощь, ибо спросить больше не у кого. Заранее благодарю!

Решение задачи: «Факториал факториала. Написать программу для вычисления»

textual
Листинг программы
  1. var overflow: boolean = false; //глобальная переменная!
  2.  
  3. procedure read_q(s: string; var x: extended);
  4. begin
  5.   repeat
  6.     write(s, ' - неотрицательное целое;  ', s, ' = ');
  7.     readln(x)
  8.   until x >= 0
  9. end;
  10.  
  11. function f(n: extended; k: integer): extended;
  12. var p: extended;
  13. begin
  14.   Result := 1;
  15.   overflow := overflow or (n > 1750);
  16.   if not overflow
  17.     then while n > 1 do
  18.       begin
  19.         Result *= n;
  20.         n -= k
  21.       end;
  22. end;
  23.  
  24. function fact(n: extended): extended;
  25. begin Result := f(n, 1) end;
  26.  
  27. function dfact(n: extended): extended;
  28. begin Result := f(n, 2) end;
  29.  
  30. var m, n, y: extended;
  31. begin
  32.   read_q('m', m);
  33.   read_q('n', n);
  34.   y := fact(m);
  35.   if not overflow
  36.     then if n < y
  37.       then writeln('Выражение не определено')
  38.       else begin
  39.         y := fact(n - y) / (fact(m) + dfact(n)) + dfact(m);
  40.         if not overflow then writeln('y = ', y)
  41.       end;
  42.   if overflow then writeln('Переполнение');
  43.   readln
  44. end.

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

  1. Глобальная переменная overflow инициализируется значением false.
  2. В функции read_q происходит чтение входных данных, пока они не станут отрицательными, и выводится сообщение об ошибке, если число отрицательное.
  3. В функции f используется цикл, который продолжает умножать число на n, пока n больше 1. Если n становится равным 1, цикл завершается. Переменная overflow устанавливается в true, если n больше 1750.
  4. Функция fact вызывает функцию f с аргументом 1, чтобы вычислить факториал числа.
  5. Функция dfact вызывает функцию f с аргументом 2, чтобы вычислить двойной факториал числа.
  6. В основной программе вводятся значения для переменных m и n, используя функцию read_q.
  7. Вычисляется факториал числа m и сохраняется в переменной y.
  8. Если n меньше, чем y, выводится сообщение об ошибке.
  9. Иначе вычисляется новое значение y, используя функции fact и dfact, и выводится на экран.
  10. Если произошло переполнение, выводится сообщение об ошибке.
  11. Программа завершается чтением строки.

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


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

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

6   голосов , оценка 4.333 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы