РУҚА
24

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

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

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

Программист написал программу неправильно. Рассмотрите приведённую ниже программу на Python.

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

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

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

7 шагов
1

При вводе числа 645 цифры извлекаются справа налево: сначала 5, затем 4, затем 6.

2

Сначала выполняется `sum = N % 10`, поэтому sum получает значение 5. Цифра 5 не кратна 3, и затем sum снова получает значение 5.

3

Цифра 4 также не кратна 3, поэтому строка `sum = digit` заменяет значение 5 на 4. Цифра 6 кратна 3 и не изменяет sum.

4

В результате программа выводит 4.

5

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

6

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

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

Ответ

Для числа 645 программа выводит 4. Пример трёхзначного числа: 300. Ошибочные строки и исправления: `sum = N % 10` → `sum = 0`; `sum = digit` → `sum += digit`.

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

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

Указать правильную сумму цифр числа 645 — 9 — вместо результата работы ошибочной программы.

Исправить только строку `sum = digit`, не изменив начальное значение sum.

Считать ошибкой условие `digit % 3 > 0`: оно правильно проверяет, что цифра не кратна 3.

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

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

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

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

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