24

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

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

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

Последовательно выполните следующие пункты: определите, что выведет программа при заданной последовательности; приведите пример последовательности, содержащей хотя бы одно делящееся нацело на 5 число, для которой программа выведет правильный ответ; найдите допущенные ошибки и исправьте их. Исправление каждой ошибки должно затрагивать только строку, в которой находится ошибка. Достаточно указать ошибки и способ их исправления для одного языка программирования. В тексте программы нужно исправить не более двух строк. Примечание: 0 делится на любое натуральное число.

Python
1n = 4
2count = 0
3minimum = 0
4for i in range(1, n+1):
5    x = int(input())
6    if x % 5 == 0:
7        count += 1
8        if x > minimum:
9            minimum = x
10if count > 0:
11    print(count)
12    print(minimum)
13else:
14    print("NO")

Для первого пункта используется последовательность: 18 15 6 10.

Открыть задачу и решить самому
Дальше ответЕсли ещё решаете — начните с подсказок: они ведут к ответу, но не выдают его.
К подсказкам

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

7 шагов
1

Из чисел 18, 15, 6 и 10 делятся на 5 числа 15 и 10. Поэтому переменная count получает значение 2.

$$count = 2$$
2

При обработке числа 15 условие x > minimum выполняется: 15 > 0, поэтому minimum становится равным 15. При обработке числа 10 условие 10 > 15 ложно, поэтому minimum остаётся равным 15.

$$minimum = 15$$
3

Следовательно, данная программа выводит две строки: 2 и 15. Правильный минимальный делящийся на 5 элемент равен 10, поэтому результат программы неверен.

$$2\newline 15$$
4

Пример последовательности, для которой программа несмотря на ошибку выдаёт правильный ответ: 18 15 6 7. В ней только одно число, делящееся на 5, поэтому программа выводит 1 и 15 — это правильный результат. Также подошла бы последовательность, в которой все делящиеся на 5 числа одинаковы.

5

В программе на Python первая ошибка находится в строке инициализации минимума. Так как все числа неотрицательные, можно задать начальное значение 1001, превышающее любой возможный ввод.

$$minimum = 1001$$
6

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

$$if x < minimum:$$

После этих двух исправлений программа подсчитывает количество чисел, делящихся на 5, и сохраняет наименьшее из них.

Ответ

1) Программа выведет 2 и 15. 2) Например, 18 15 6 7: программа выведет правильный ответ 1 и 15. 3) В Python исправить: minimum = 0 → minimum = 1001; if x > minimum: → if x < minimum:.

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

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

Считать, что программа сразу выводит правильный минимум 10, не проследив за ошибочным условием x > minimum.

Исправлять только знак сравнения, оставляя initial minimum равным 0.

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

Приводить последовательность без делящихся на 5 чисел во втором пункте.

Забывать, что число 0 также делится на 5.

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

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

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

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