1-11 класс
  • 1-11 класс
  • 1 класс
  • 2 класс
  • 3 класс
  • 4 класс
  • 5 класс
  • 6 класс
  • 7 класс
  • 8 класс
  • 9 класс
  • 10 класс
  • 11 класс
Выберите класс
Предметы
Босова
Задание 3 Параграф 8 ГДЗ Босова 11 класс (Информатика)
Босова, Босова
11 класс
Автор
Босова, Босова

Задание 3 Параграф 8 ГДЗ Босова 11 класс (Информатика)

Задача

Program summa;
const n=10;
var a: array [l..n] of integer; s, i: integer;
begin
for i:=1 to n do
begin
readin(a[i]);
s:=s+i
end;
writein(‘s=’, s)
end.
1) Что получится в результате выполнения этой программы, если в качестве элементов массива ввести числа: 1, —2, 3, -4, 5, -6, 7, -8, 9, -10?
2) Придумайте пример такого массива, обработка которого с помощью этой программы приводила бы к правильному результату.
3) Найдите ошибку, допущенную программистом.
Вместо сложения элементов массива в программе происходит сложение индексов массива.
1) В предлагаемом массиве количество элементов равно 10
s=1+2+3+4+5+6+7+8+9+10=54
2) Если сумма элементов массива равнялась бы сумме индексов массивов, то при обработке такого массива получился бы правильный ответ.
Например, массив имеет 10 элементов, сумма индексов равна 54, подойдем массив 10, 15, -30, 5, 13, 7, 9, 45, -3, -17
3) Вместо сложения элементов массива в программе происходит сложение индексов массива.
Вместо s:=s+i надо было написать s:=s+a[i]

Подробный ответ

В программе допущена ошибка: вместо суммы элементов массива вычисляется сумма индексов.

При вводе 10 элементов цикл выполнится для $$i=1,2,\dots,10$$, поэтому значение $$s$$ станет равным

$$s=1+2+3+4+5+6+7+8+9+10=55.$$

Но в исходном тексте решения указано, что переменная $$s$$ не была инициализирована нулём, поэтому в зависимости от среды выполнения результат может быть неопределённым. В корректной программе перед циклом должно быть $$s:=0$$. Тогда при ошибочном сложении индексов получится $$55$$.

Для правильной работы программы нужно заменить строку

s:=s+i

на

s:=s+a[i]

Пример массива, для которого ошибочная программа даст правильный результат: если сумма его элементов равна $$55$$, например

$$10,\ 15,\ -30,\ 5,\ 13,\ 7,\ 9,\ 45,\ -3,\ -16.$$

Проверка:

$$10+15-30+5+13+7+9+45-3-16=55.$$

Ответ

1) При корректной инициализации $$s:=0$$ программа выведет $$s=55$$. Если $$s$$ не инициализировать, результат неопределён.

2) Подойдёт любой массив из 10 элементов, сумма которых равна $$55$$, например $$10,\ 15,\ -30,\ 5,\ 13,\ 7,\ 9,\ 45,\ -3,\ -16$$.

3) Ошибка в строке $$s:=s+i$$. Нужно писать $$s:=s+a[i]$$.



Общая оценка
3.7 / 5
Другие учебники
Другие предметы