РУҚА
24

Решение: Исправление программы обработки чисел

ЕГЭ · Информатика · Задание 24 · Основы программирования
ПовышеннаяФИПИC99C04Развёрнутое решение≈ 15 минутРазбор в 6 шагов
Условие

На обработку поступает последовательность из четырёх неотрицательных целых чисел (некоторые числа могут быть одинаковыми). Нужно написать программу, которая выводит на экран количество чётных чисел в исходной последовательности и максимальное чётное число. Если чётных чисел нет, требуется вывести «NO». Известно, что вводимые числа не превышают 1000. Программист написал программу неправильно. Последовательно выполните следующие действия: 1) определите, что выведет программа при вводе последовательности 2 15 44 15; 2) приведите пример последовательности, содержащей хотя бы одно чётное число, при вводе которой программа, несмотря на ошибки, выведет правильный ответ; 3) найдите допущенные ошибки и исправьте их. Для каждой ошибки выпишите строку, в которой она сделана, и приведите правильный вариант этой строки. Исправление должно затрагивать только строку, в которой находится ошибка. Известно, что нужно исправить не более двух строк. Достаточно указать ошибки и способ их исправления для одного языка программирования. Примечание: 0 делится на любое натуральное число.

Python
1n = 4
2count = 0
3maximum = 1000
4for i in range(1, n+1):
5    x = int(input())
6    if x % 2 == 0:
7        count += 1
8        if x > maximum:
9            maximum = i
10if count > 0:
11    print(count)
12    print(maximum)
13else:
14    print("NO")
Открыть задачу и решить самому
Дальше ответЕсли ещё решаете — начните с подсказок: они ведут к ответу, но не выдают его.
К подсказкам

Решение по шагам

6 шагов
1

Для последовательности 2, 15, 44, 15 чётными являются числа 2 и 44, поэтому count после обработки всех чисел равен 2.

2

Переменная maximum изначально равна 1000. Ни одно введённое число не превосходит 1000, поэтому условие x > maximum ни разу не выполняется. В результате программа выводит количество чётных чисел и исходное значение maximum.

$$2\n1000$$
3

Пример последовательности, для которой программа случайно выдаёт правильный ответ: 1000 15 15 15. Чётных чисел одно, максимальное чётное число равно 1000. Программа также выведет 1 и 1000.

4

Первая ошибка: maximum = 1000. Если максимальное чётное число равно 1000, это значение допустимо, но сравнение x > maximum не позволяет корректно найти меньшие значения. Кроме того, при отсутствии подходящей замены программа сохраняет значение 1000 даже тогда, когда такого числа во входе нет. Начальное значение следует заменить на 0, так как все числа неотрицательны.

$$\texttt{maximum = 0}$$
5

Вторая ошибка: при нахождении большего чётного числа в maximum записывается номер элемента i, а не само число x. Нужно записывать значение введённого числа.

$$\texttt{maximum = x}$$

После исправления программа для каждой последовательности с чётными числами подсчитывает их количество и сохраняет наибольшее из них. При отсутствии чётных чисел выводится NO.

Ответ

1) Программа выведет: 2 и 1000. 2) Например, последовательность 1000 15 15 15; правильный ответ: 1 и 1000. 3) Исправления в Python: строку maximum = 1000 заменить на maximum = 0; строку maximum = i заменить на maximum = x.

Этот ответ получен в разборе, но не сверен с официальным ключом из банка — проверьте выкладки, прежде чем заучивать результат.

Где здесь ошибаются

Считать, что программа выводит 2 и 44 для первой последовательности.

Заменить maximum = i на maximum = x, но не исправить начальное значение maximum.

Выбрать в качестве исправления maximum = -1, хотя по условию все числа неотрицательные и требуется исправить не более двух строк.

Привести собственную новую программу вместо исправления конкретных строк исходной программы.

Забыть указать пример последовательности, для которой ошибочная программа случайно работает правильно.

Закрепить приёмВ теме «Основы программирования» ещё 159 задач — с ответом и таким же разбором.
Тренироваться

Как решать задание 24 ЕГЭ, информатика

Разбор этой задачи разложен на 6 шагов: видно, откуда берётся каждое число и где теряется балл. Ответ приведён рядом с выкладками, а не вместо них.

Задача из темы «Основы программирования»: в ней 160 задач, и у каждой есть такой же разбор. Регистрация не нужна.