Program Factorial; Var N: Longint; i: Integer; Begin { Через For } Begin { Проверяем, чтоб введённое число было неотрицательным и не больше 13 (13! = 6227020800, что больше максимума Longint) } Repeat Write('Vvedite N (ot 0 do 12): '); ReadLn(N); Until (N >= 0) And (N <= 12); If N = 0 Then N := 1 Else For i := N - 1 Downto 2 Do N := N * i; WriteLn('N! = ', N); End; { Через While } Begin Repeat Write('Vvedite N (ot 0 do 12): '); ReadLn(N); Until (N >= 0) And (N <= 12); If N = 0 Then N := 1 Else Begin i := N - 1; While i >= 2 Do Begin N := N * i; i := i - 1; End; End; WriteLn('N! = ', N); End; { Через Repeat } Begin Repeat Write('Vvedite N (ot 0 do 12): '); ReadLn(N); Until (N >= 0) And (N <= 12); If N < 2 Then N := 1 Else Begin i := N - 1; Repeat N := N * i; i := i - 1; Until i < 2; End; WriteLn('N! = ', N); End; ReadLn; End. |