24

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

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

На обработку поступает натуральное число, не превышающее $10^9$. Нужно написать программу, которая выводит на экран максимальную чётную цифру этого числа. Если в числе нет чётных цифр, требуется вывести «NO». Программист написал программу неправильно. Рассмотрите приведённую ниже программу на Python:

N = int(input())
maxDigit = N % 10
while N > 0:
digit = N % 10
if digit % 2 == 0:
if digit > maxDigit:
digit = maxDigit
N = N // 10
if maxDigit >= 0:
print(maxDigit)
else:
print("NO")

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

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

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

6 шагов
1

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

2

Затем программа рассматривает цифры 3, 4 и 2. Для цифры 4 условие digit > maxDigit выполняется, но из-за ошибки присваивается digit = maxDigit. Значение maxDigit не изменяется и остаётся равным 3.

3

В конце проверка maxDigit >= 0 выполняется, поэтому программа выводит число 3.

4

Пример подходящего трёхзначного числа — 248. В нём максимальная чётная цифра равна 8, а последняя цифра также равна 8. Ошибочная программа сохраняет 8 и поэтому выдаёт правильный ответ.

5

Первая ошибка состоит в том, что начальное значение максимальной цифры берётся равным последней цифре числа. Нужно использовать значение, которое меньше любой цифры.

$$maxDigit = N \% 10 \longrightarrow maxDigit = -1$$

Вторая ошибка состоит в обратном присваивании при нахождении большей цифры. Нужно заменить значение максимальной цифры найденной цифрой.

$$digit = maxDigit \longrightarrow maxDigit = digit$$
Ответ

Для 243 программа выводит 3. Пример трёхзначного числа: 248. Исправления: maxDigit = N % 10 заменить на maxDigit = -1; digit = maxDigit заменить на maxDigit = digit.

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

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

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

Менять условие digit > maxDigit вместо строки с присваиванием.

Исправлять только присваивание maxDigit = digit и забывать изменить начальное значение maxDigit.

Приводить число, у которого последняя цифра не совпадает с максимальной чётной цифрой.

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

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

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

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