РУҚА
24

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

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

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

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

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

6 шагов
1

Из последовательности 2 19 24 3 числа 2 и 19 не делятся на 3, поэтому count станет равным 2. Числа 24 и 3 делятся на 3.

2

Переменная minimum изначально равна 1. Для числа 2 условие x < minimum ложно, поэтому значение minimum не изменяется. Для числа 19 условие также ложно. Программа выводит количество 2 и значение minimum 1.

$$2\newline1$$
3

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

4

Первая ошибка: начальное значение minimum равно 1, хотя среди неотрицательных чисел может встретиться любое значение от 0 до 1000. Для корректного поиска минимума удобно установить minimum = 1001.

5

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

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

Ответ

Для последовательности 2 19 24 3 программа выведет 2 и 1. Пример последовательности с правильным результатом: 1 3 6 9. Ошибочные строки и исправления: minimum = 1 заменить на minimum = 1001; minimum = i заменить на minimum = x.

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

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

Указать в качестве результата минимальное подходящее число 2 вместо фактического вывода программы 1.

Исправить только строку minimum = i и не изменить начальное значение minimum.

Записать в minimum номер позиции найденного числа, а не само число.

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

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

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

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

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