Номер §4.5 № 3

ГДЗ по информатике 8 класс, Босова 2023, страница 192

§. № Исправление программы вычисления факториала

Требовалось написать программу вычисления факториала числа n (факториал числа n есть произведение всех целых чисел от 1 до n). Программист торопился и написал программу неправильно. Ниже приведён фрагмент его программы, в котором содержится несколько ошибок:

k := 1;
f := 0;
while k < n do
  f := f * k;
k := k + 1

Обсудите этот фрагмент программы в группе. Найдите ошибки. Внесите необходимые исправления, допишите программу и выполните её на компьютере. Для проверки правильности программы используйте тест: n = 5 → 5! = 120; n = 6 → 6! = 720.

Решение

По определению факториала нужно перемножить числа от до n включительно. Переменная f хранит накопленное произведение, поэтому её начальное значение должно быть : при начальном нуле любое последующее произведение осталось бы нулём. Условие k < n пропускает множитель n; меняем его на k <= n. В Паскале после while без begin ... end повторяется только одна команда. Следовательно, и умножение, и увеличение k нужно заключить в тело цикла. Иначе k не меняется внутри цикла, и он зацикливается.

var n, k, f: integer;
begin
  write('Введите n>>');
  readln(n);
  k := ;
  f := ;
  while k <= n do
  begin
    f := f * k;
    k := k + 
  end;
  writeln(n, '!=', f)
end.

Проверка: для n = переменная f последовательно равна , а k после последнего умножения становится . Получаем . Для n = выполняется ещё одно умножение: , значит, .

Ответ

Исправить f := на f := , k < n на k <= n и включить обе команды в тело цикла. Тесты: ! = , ! = .

Помогло?

Нет твоего задания?Сфоткай, и ДЗмэн решит за пару секунд.

Решить по фото