Задание: сделать функцию определения того, что данное число является факториалом: function reversef (f: integer; var n: integer): boolean (возвращает true, если f – факториал, n – число, факториалом которого является f.
Непонятно, зачем передача n по ссылке? Если заданное f - факториал n, то помимо true вернуть значение n?
Да
Сможете помочь?
Задание для модуля вообще. Но часть модуля сделана - это неполучается.
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;
В системах, где под тип integer отводится 4 байта максимальное обрабатываемое значение 12!, а где отводится 2 байта - 7!
Спасибо. А в программе нужно ввести два значения? Одно - это именно число, а второе какое?
А второе - переменная типа integer, в которую при значении функции true будет помещено значение n, для которого n! совпадает со значением, заданным первым аргументом.
спасибо
Для "спасибо" тут принято использовать синюю кнопочку.
k:=2; repeat p:=1; for i:=2 to k do p:=p*i; if p Что делает этот фрагмент кода.
что такое k? и что такое p?
Ну вот.... напиши сначала, а потом объясняй каждую строку? Факториалы он считает, начиная от 2! и сравнивает значение с заданным, пока не совпадет или не превысит.