Задание: сделать функцию определения того, что данное число является факториалом:...

0 голосов
36 просмотров

Задание: сделать функцию определения того, что данное число является факториалом: function reversef (f: integer; var n: integer): boolean (возвращает
true, если f – факториал, n – число, факториалом которого является f.


Информатика (35 баллов) | 36 просмотров
0

Непонятно, зачем передача n по ссылке? Если заданное f - факториал n, то помимо true вернуть значение n?

0

Да

0

Сможете помочь?

0

Задание для модуля вообще. Но часть модуля сделана - это неполучается.

Дан 1 ответ
0 голосов
Правильный ответ

Function reversef(f:integer; var n:integer):boolean;
var
  i,k:integer;
  p:longint;
begin
  if f=1 then begin reversef:=true; n:=1 end
  else begin
    k:=2;
    repeat
      p:=1;
      for i:=2 to k do p:=p*i;
      if p    until p>=f;
    if p=f then begin reversef:=true; n:=k end
    else begin reversef:=false; n:=-1 end
  end
end;

(142k баллов)
0

В системах, где под тип integer отводится 4 байта максимальное обрабатываемое значение 12!, а где отводится 2 байта - 7!

0

Спасибо. А в программе нужно ввести два значения? Одно - это именно число, а второе какое?

0

А второе - переменная типа integer, в которую при значении функции true будет помещено значение n, для которого n! совпадает со значением, заданным первым аргументом.

0

спасибо

0

Для "спасибо" тут принято использовать синюю кнопочку.

0

k:=2;
repeat
p:=1;
for i:=2 to k do p:=p*i;
if p
Что делает этот фрагмент кода.

0

что такое k? и что такое p?

0

Ну вот.... напиши сначала, а потом объясняй каждую строку? Факториалы он считает, начиная от 2! и сравнивает значение с заданным, пока не совпадет или не превысит.