Задание 4 Параграф 8 ГДЗ Босова 11 класс (Информатика)
Program proizv;
const n=10;
var a: array [l..n] of integer; p, i: integer;
begin
p:=0;
for i:=1 to n do
begin
readln(a[i]);
p:=p*a [i]
end;
writein(’p=’, p)’
end.
1) Что получится в результате выполнения этой программы, если в качестве элементов массива ввести числа: 1, —2, 3, -4, 5, -6, 7, -8, 9, -10?
2) Придумайте пример такого массива, обработка которого с помощью этой программы приводила бы к правильному результату.
3) Найдите ошибку, допущенную программистом.
1) результат будет 0.
2) любой массив, среди элементов которого есть 0.
3) ошибка отмечена в тексте программы. Для исправления надо вместо p:=0; надо записать p:=1;
В программе переменная $$p$$ используется для накопления произведения элементов массива. Но перед циклом ей присваивается значение $$0$$:
p:=0;
for i:=1 to n do
begin
readln(a[i]);
p:=p*a[i]
end;
Так как при умножении на ноль всегда получается ноль, после первой же операции и далее значение $$p$$ останется равным $$0$$ независимо от введённых чисел.
1) Для массива $$1, -2, 3, -4, 5, -6, 7, -8, 9, -10$$ результат выполнения программы будет $$0$$.
2) Чтобы программа дала правильный результат, достаточно, чтобы истинное произведение элементов массива тоже было равно $$0$$. Например, подойдёт любой массив, содержащий ноль, например:
$$1, 2, 0, 4, 5, 6, 7, 8, 9, 10$$
Тогда и правильное произведение, и результат программы будут равны $$0$$.
3) Ошибка в строке инициализации переменной $$p$$. Для нахождения произведения нужно начинать с единицы:
p:=1;
Ответ
1) $$0$$.
2) Например, $$1, 2, 0, 4, 5, 6, 7, 8, 9, 10$$.
3) Вместо p:=0; нужно написать p:=1;.