РУҚА
24

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

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

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

Python
1N = int(input())
2minDigit = N % 10
3while N > 0:
4    digit = N % 10
5    if digit % 2 == 0:
6        if digit < minDigit:
7            minDigit = digit
8    N = N // 10
9if minDigit == 0:
10    print("NO")
11else:
12    print(minDigit)
Открыть задачу и решить самому
Дальше ответЕсли ещё решаете — начните с подсказок: они ведут к ответу, но не выдают его.
К подсказкам

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

5 шагов
1

При вводе 231 сначала выполняется присваивание minDigit = 231 % 10, поэтому minDigit получает значение 1.

$$231 \bmod 10 = 1$$
2

Затем программа рассматривает цифры 1, 3 и 2. Цифра 2 чётная, но условие 2 < 1 ложно, поэтому значение minDigit не изменяется. В конце проверка minDigit == 0 также ложна, и программа выводит 1.

3

Пример числа, для которого программа случайно выдаёт правильный ответ, — 246. Начальное значение minDigit равно 6, затем оно заменяется на 4 и 2. В результате выводится 2 — минимальная чётная цифра числа.

4

Первая ошибка состоит в начальной инициализации минимума последней цифрой числа. Последняя цифра может быть нечётной и помешать поиску минимума. Исправление: minDigit = 10.

Вторая ошибка состоит в проверке minDigit == 0. Ноль является допустимой минимальной чётной цифрой, поэтому отсутствие найденной цифры нужно обозначить значением 10. Исправление: if minDigit == 10:.

Ответ

1) При вводе 231 программа выводит 1. 2) Например, при вводе 246 программа выводит 2, что является правильным ответом. 3) В Python нужно заменить строку minDigit = N % 10 на minDigit = 10, а строку if minDigit == 0: на if minDigit == 10:.

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

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

Считать, что при вводе 231 программа выводит 2, не учитывая начальное значение minDigit = 1.

Использовать 0 как признак отсутствия чётных цифр, хотя 0 сама является чётной цифрой.

Исправлять несколько команд в одной строке или переписывать алгоритм целиком вместо замены ровно двух строк.

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

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

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

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