РУҚА
24

Решение: Поиск максимальной цифры

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

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

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

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

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

6 шагов
1

При вводе числа 108 программа последовательно рассматривает цифры 8, 0 и 1. Цифра 8 не делится на 5, цифра 0 делится на 5, но условие `digit > maxDigit` при `maxDigit = 0` ложно. Поэтому значение `maxDigit` остаётся равным 0. В конце проверяется условие `maxDigit > 0`, которое также ложно.

2

Следовательно, исходная программа при вводе 108 выводит `NO`, хотя правильным ответом является 0.

3

Пример трёхзначного числа, при котором программа выдаёт верный ответ: 125. В числе есть цифра 5, и программа выводит 5 — максимальную цифру, кратную 5.

4

Первая ошибка состоит в начальной инициализации максимальной цифры. Значение 0 не позволяет отличить наличие цифры 0 от отсутствия подходящих цифр.

$$maxDigit = -1$$
5

Вторая ошибка состоит в проверке результата. Если максимальная подходящая цифра равна 0, нужно вывести 0, поэтому следует проверять неравенство `>= 0`.

$$if\ maxDigit \ge 0:$$

Для языка Python исправления имеют вид: `maxDigit = -1` вместо `maxDigit = 0`; `if maxDigit >= 0:` вместо `if maxDigit > 0:`.

Ответ

1) При вводе 108 программа выводит `NO`, хотя правильный ответ — 0. 2) Например, 125: программа выводит 5, что верно. 3) В Python исправить `maxDigit = 0` на `maxDigit = -1` и `if maxDigit > 0:` на `if maxDigit >= 0:`.

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

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

Считать, что цифра 0 не делится на 5.

Назвать только ошибку в условии вывода и не исправить начальное значение maxDigit.

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

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

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

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

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

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