24

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

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

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

Напоминание: 0 делится на любое натуральное число.

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

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

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

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

6 шагов
1

При вводе числа 145 программа последовательно рассматривает цифры 5, 4 и 1. Ни одна из них не делится на 3.

2

Переменная count изначально равна 1 и не изменяется. Поэтому условие count == 0 ложно, и программа выводит число 1.

3

Чтобы программа выдавала правильный ответ для трёхзначного числа, можно взять 102. В нём только одна цифра, 0, делится на 3. Программа также выдаёт 1, поэтому для этого числа результат верен.

4

Первая ошибка находится в строке count = 1. Счётчик найденных цифр должен начинаться с нуля.

$$count = 0$$
5

Вторая ошибка находится в строке count = count + digit. При обнаружении подходящей цифры нужно увеличить количество цифр на единицу, а не прибавлять значение цифры.

$$count = count + 1$$

Остальные строки корректно извлекают цифры числа, проверяют делимость на 3 и выводят NO при отсутствии подходящих цифр.

Ответ

Для 145 программа выведет 1; пример трёхзначного числа — 102; исправления: count = 1 заменить на count = 0, а count = count + digit — на count = count + 1.

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

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

Указать, что при вводе 145 программа выводит NO, не учитывая ошибочную инициализацию count.

Заменить count = count + digit на подсчёт суммы цифр вместо увеличения количества найденных цифр на единицу.

Не учесть, что 0 делится на 3, и привести неподходящий пример трёхзначного числа.

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

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

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

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

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