Задание 3 Параграф 4.5 ГДЗ Босова 8 класс 2023 (Информатика)
k := 1;
f := 0;
while k < n
do
f := f * k;
k:= k + 1
Обсудите этот фрагмент программы в группе. Найдите ошибки. Внесите необходимые исправления, допишите программу и выполните её на компьютере. Для проверки правильности программы используйте тест:
Входные данные
Введите n > > 5
Введите n > > 6
Выходные данные
5!=120
6!=720
В программе нет операторных скобок, неправильно определено f и условие цикла.
var
k, f, n: integer;
begin
write(‘n > > ‘);
readln(n);
k := 1; f := 1;
while k < = n do
begin
f := f * k;
inc(k)
end;
writeln(n,'!=', f)
end.
Окно вывода
n > > 5
5!=120
n > > 6
6!=720
В фрагменте программы допущены три ошибки:
- переменная $$f$$ должна начинаться с $$1$$, а не с $$0$$, иначе произведение всегда будет равно нулю;
- в цикле нужно использовать операторные скобки begin … end, чтобы в него входили оба оператора;
- условие цикла должно быть $$k \le n$$, чтобы в произведение вошло и число $$n$$.
Исправленная программа:
var
k, f, n: integer;
begin
write(‘n>>’);
readln(n);
k := 1;
f := 1;
while k <= n do
begin
f := f * k;
inc(k)
end;
writeln(n, ‘!=’, f)
end.
Проверка:
- при $$n=5$$ получаем $$5! = 1 \cdot 2 \cdot 3 \cdot 4 \cdot 5 = 120$$;
- при $$n=6$$ получаем $$6! = 1 \cdot 2 \cdot 3 \cdot 4 \cdot 5 \cdot 6 = 720$$.
Ответ
Ошибки: $$f := 0$$, отсутствие операторных скобок, неверное условие цикла. Исправленная программа вычисляет факториал правильно.