24

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

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

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

Программа на языке Python:

N = int(input())
minDigit = 9
while N > 0:
digit = N % 10
if digit % 3 == 0:
if digit < minDigit:
digit = minDigit
N = N // 10
if minDigit <= 9:
print(minDigit)
else:
print("NO")

Последовательно выполните следующие действия:
1. Напишите, что выведет эта программа при вводе числа 143.
2. Приведите пример такого трёхзначного числа, при вводе которого программа выдаёт верный ответ.
3. Найдите все ошибки в этой программе. Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк. Для каждой ошибки выпишите строку, в которой сделана ошибка, и приведите правильный вариант этой строки. Исправление должно затрагивать только строку, в которой находится ошибка.

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

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

5 шагов
1

Разложим число 143 на цифры. Сначала обрабатывается цифра 3. Она делится на 3, и выполняется условие digit < minDigit, так как 3 < 9.

$$digit = 3,\quad minDigit = 9$$
2

Вместо изменения минимальной найденной цифры программа изменяет саму переменную digit: выполняется строка digit = minDigit. Поэтому minDigit остаётся равной 9.

$$digit = 9,\quad minDigit = 9$$
3

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

$$9$$
4

Пример трёхзначного числа, для которого программа выдаёт верный ответ, — 111. В его записи нет цифр, делящихся на 3, поэтому правильный ответ — NO. Программа также выводит NO, поскольку minDigit не изменяется и после цикла равно 9.

Единственная ошибка находится в строке, которая должна сохранять найденную минимальную цифру в переменной minDigit. Исправление не требует изменения других строк.

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

1) 9. 2) Например, 111. 3) Ошибочная строка: digit = minDigit. Правильный вариант: minDigit = digit.

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

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

Указать для числа 143 вывод 3, не проследив фактическое выполнение ошибочной программы.

Исправить условие digit < minDigit вместо строки присваивания.

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

Привести пример числа, не являющегося трёхзначным.

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

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

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

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