РУҚА
24

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

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

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

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

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

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

6 шагов
1

При вводе числа 748 сначала выполняется присваивание sum = N % 10, поэтому sum получает значение 8.

$$sum = 748 \bmod 10 = 8$$
2

В цикле цифры обрабатываются справа налево: 8, 4, 7. При цифре 8 переменная sum получает значение 8, при цифре 4 не изменяется, а при цифре 7 получает значение 7.

$$sum = 7$$
3

Следовательно, программа выводит число 7. Правильная сумма цифр числа 748, больших 5, равна 8 + 7 = 15, поэтому результат работы программы неверен.

$$8 + 7 = 15$$
4

Пример трёхзначного числа, для которого программа выдаёт верный ответ, — 127. Единственная цифра, большая 5, — это 7, и программа также выводит 7.

5

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

$$sum = 0$$

Вторая ошибка: при обнаружении цифры, большей 5, прежняя сумма заменяется этой цифрой. Нужно прибавлять цифру к накопленной сумме.

$$sum = sum + digit$$
Ответ

Для 748 программа выведет 7. Пример подходящего трёхзначного числа: 127. Ошибки в Python: строку «sum = N % 10» заменить на «sum = 0», а строку «sum = digit» — на «sum = sum + digit».

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

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

Указать правильную сумму для 748 вместо результата работы ошибочной программы.

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

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

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

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

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

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

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