Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+1

Составить алгоритм Pascal

Составить алгоритм вычисления факториала ( n! ), используя 3 вида циклов:
- с предусловием;
- с постусловием;
- со счетчиком;

По дате
По рейтингу
Аватар пользователя
Новичок

С предусловием:

123456
 f := 1;
i := 2;
while i <= n do begin
  f := f * i;
  inc(i)
end; 

С постусловием:

123456
 f := 1;
i := 0;
repeat
  inc(i);
  f := f * i
until i >= n; 

Со счётчиком:

12
 f := 1;
for i := 2 to n do f := f * i; 
Аватар пользователя
Мыслитель

Тут главное с типом переменной для факториала не опростоволоситься:

123456789101112131415161718192021222324
 var i, n: integer; 
f: int64; 
begin 
  write('n » '); 
  readln(n); 
  i := n; 
  f := 1; 
  while i > 1 do 
    begin 
      f := f * i;
      dec(i)
    end; 
  write('n! = ', f); 
  f := 1; 
  i := 0; 
  repeat 
    inc(i); 
    f := f * i 
  until i = n; 
  write(' ', f); 
  f := 1; 
  for i := 1 to n do f := f * i; 
  writeln(' ', f) 
end. 

Это точно для натуральных n до двадцати включительно. Приближённо можно ещё вычислять факториал как вещественное число типа real до n=170 включительно, а с факториалом типа extended n можно брать даже больше. A в Паскале ЭйБиСи.Нет можно воспользоваться типом BigInteger - там всё точно и без ограничений.

Аватар пользователя
Мастер

program Factorial;
var n, f, i: integer;
begin
writeln(‘Введите число n:’);
readln(n);

// Вычисление факториала с использованием цикла с предусловием
f := 1;
i := 2;
while i <= n do
begin
f := f * i;
i := i + 1;
end;
writeln('Факториал числа n с использованием цикла с предусловием: ', f);

// Вычисление факториала с использованием цикла с постусловием
i := 2;
f := 1;
repeat
f := f * i;
i := i + 1;
until i > n;
writeln('Факториал числа n с использованием цикла с постусловием: ', f);

// Вычисление факториала с использованием цикла со счетчиком
i := 1;
f := 1;
while i <= n do begin
f := f * i;
i := i + 1;
end;
writeln('Факториал числа n с использованием цикла со счетчиком: ', f);
readln;
end.