СДАМ ГИА: РЕШУ ЕГЭ
Образовательный портал для подготовки к экзаменам
Информатика
≡ информатика
сайты - меню - вход - новости



Задания
Версия для печати и копирования в MS Word
Задание 24 № 6903

Требовалось написать программу, при выполнении которой с клавиатуры вводится последовательность из шести неотрицательных целых чисел, не превышающих 106, подсчитывается и выводится сумма введённых чётных чисел или 0, если чётных чисел в последовательности нет. Ученик написал такую программу:

 

БейсикПаскаль

DIM N, S AS LONG

DIM I AS INTEGER

S = 1

FOR I = 1 TO 6

INPUT N

IF I MOD 2 = 0 THEN

S = S + N

END IF

NEXT I

PRINT S

END

var n, s: longint;

i: integer;

begin

s:=1;

for i:=1 to 6 do begin

readln(n);

if i mod 2 = 0 then

s := s + n;

end;

write(s);

end.

Си++Алгоритмический

#include <iostream>

using namespace std;

int main(){

long int n, s;

int i;

s = 1;

for (i=1; i<=6; ++i) {

cin >> n;

if (i%2 == 0)

s = s + n;

}

cout << s;

}

алг

нач

цел n, s

цел i

s := 1

нц для i от 1 до 6

ввод n

если mod(i,2) = 0

то s := s + n

все

кц

вывод s

кон

Python

s = 1

for i in range(1, 7):

    n = int(input())

    if i % 2 == 0:

        s = s + n

print(s)

 

Последовательно выполните следующее.

1. Напишите, что выведет эта программа при вводе последовательности 1, 1, 2, 3, 5, 8.

2. Приведите пример последовательности, при вводе которой программа выдаст верный ответ.

3. Найдите в программе все ошибки (их может быть одна или несколько).

Для каждой ошибки выпишите строку, в которой она допущена, и приведите эту же строку в исправленном виде. Обратите внимание: Вам нужно исправить приведённую программу, а не написать свою. Вы можете только заменять ошибочные строки, но не можете удалять строки или добавлять новые. Заменять следует только ошибочные строки: за исправления, внесённые в строки, не содержащие ошибок, баллы будут снижаться.

Решение.

1. При вводе последовательности 1, 1, 2, 3, 5, 8 программа выведет число 13.

Комментарий. Приведённая программа вместо подсчёта суммы чётных чисел считает сумму чисел, стоящих на чётных позициях в последовательности, и дополнительно увеличивает эту сумму на 1 из-за неверной инициализации.

2. Пример последовательности, для которой программа даёт верный ответ:

2, 1, 1, 2, 1, 2.

Комментарий. При любом вводе данных результатом программы будет сумма второго, четвертого и шестого чисел, увеличенная на 1. Чтобы результат был верным, нужно подобрать такую последовательность, в которой эта сумма совпадет с суммой чётных чисел. Например, в приведённой выше последовательности обе суммы равны 6.

3. Ошибки содержатся в двух строках программы:

1) неверная инициализация переменной s: вместо значения 1 нужно присваивать 0;

2) неверная проверка условия: вместо чётности i нужно проверять четность n.

 

Пример исправления для языка Паскаль

 

Первая строка с ошибкой:

s:=1;

Исправленная строка:

s:=0;

 

Вторая строка с ошибкой:

if i mod 2 = 0 then

Исправленная строка:

if n mod 2 = 0 then

 

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