24

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

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

На обработку поступает последовательность из четырёх неотрицательных целых чисел, некоторые числа могут быть одинаковыми. Требуется вывести количество чисел, делящихся нацело на 3, и максимальное из таких чисел. Если таких чисел нет, необходимо вывести «NO». Вводимые числа не превышают 1000. Программист написал программу неправильно. Последовательно выполните три пункта: определите результат работы программы при вводе последовательности 2 9 4 3; приведите пример последовательности, содержащей хотя бы одно число, делящееся нацело на 3, для которой программа, несмотря на ошибку, выдаёт правильный ответ; найдите ошибки и исправьте их, изменяя только строки, в которых они находятся. Достаточно указать ошибки и исправления для одного языка программирования. В программе нужно исправить не более двух строк. Число 0 делится на любое натуральное число.

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

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

6 шагов
1

Из последовательности 2, 9, 4, 3 числа 9 и 3 делятся нацело на 3, поэтому количество таких чисел равно 2.

2

Переменная maximum изначально равна 999. После обработки числа 9 условие $9 < 999$ истинно, поэтому maximum становится равной 9. После обработки числа 3 условие $3 < 9$ также истинно, поэтому maximum становится равной 3.

3

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

4

Пример последовательности, для которой ошибка не проявляется: 2 9 4 1. Единственное число, делящееся нацело на 3, — 9, поэтому программа выводит количество 1 и число 9, то есть правильный ответ.

5

Ошибка заключается в том, что программа выбирает минимальное делящееся на 3 число, а требуется максимальное. Необходимо изменить условие сравнения.

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

$$if x > maximum:$$
Ответ

1) При вводе 2 9 4 3 программа выведет 2 и 3. 2) Например, последовательность 2 9 4 1: программа выведет 1 и 9, что является правильным ответом. 3) Ошибочная строка `if x < maximum:`; исправленная строка `if x > maximum:`.

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

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

Считать, что программа выводит максимальное число, не проследив изменение переменной maximum.

Назвать ошибкой начальное значение maximum = 999: оно корректно, поскольку максимальное число, делящееся на 3, среди чисел от 0 до 1000 равно 999.

Привести последовательность без чисел, делящихся на 3, хотя по условию такой пример должен содержать хотя бы одно такое число.

Изменить несколько строк или написать новую программу вместо исправления конкретной ошибочной строки.

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

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

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

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