Шешімі: Исправление программы подсчёта цифр
Требовалось написать программу, которая получает на вход натуральное число $N$, не превосходящее $10^9$, и выводит число, равное количеству цифр 2 в десятичной записи числа $N$. Программист написал программу неправильно. Ниже приведена программа на нескольких языках программирования.
Последовательно выполните следующие действия:
1. Определите, что выведет программа при вводе числа 324.
2. Приведите пример входного числа $N$, при котором программа, несмотря на ошибки, выдаёт верный ответ.
3. Найдите допущенные программистом ошибки и исправьте их. Исправление каждой ошибки должно затрагивать только строку, в которой находится ошибка. Для каждой ошибки выпишите строку, в которой она сделана, и приведите правильный вариант строки. Известно, что в тексте программы нужно исправить не более двух строк, чтобы она стала работать правильно. Достаточно указать ошибки и способ их исправления для одного языка программирования. Требуется найти ошибки в имеющейся программе, а не написать другую программу, использующую иной алгоритм решения.
Программа на языке Python:
N = int(input())
R = 0
while N > 0:
d = N % 10
if d != 2:
R = R + 1
N = N // 10
print(d)
Шешім по шагам
5 қадамПри вводе 324 цикл последовательно выделяет цифры справа налево: сначала 4, затем 2, затем 3. После обработки цифры 3 число N становится равным 0, и цикл завершается.
$$d: 4 \to 2 \to 3$$В исходной программе переменная R увеличивается для цифр, не равных 2. Для числа 324 она станет равна 2, поскольку цифры 4 и 3 не равны 2. Однако программа выводит не R, а последнее значение d, то есть 3.
$$R = 2,\quad d = 3$$Пример входного числа, при котором исходная программа даёт верный ответ, — 22. После обработки цифр 2 и 2 значение d равно 2, а правильное количество цифр 2 также равно 2.
$$N=22:\quad d=2,\quad \text{количество цифр 2}=2$$Первая ошибка находится в условии: счётчик должен увеличиваться при d == 2, а не при d != 2.
$$if\ d\ !=\ 2:\ \longrightarrow\ if\ d\ ==\ 2:$$Вторая ошибка находится в последней строке: необходимо вывести счётчик R, содержащий количество найденных цифр 2.
$$print(d)\ \longrightarrow\ print(R)$$1) При вводе 324 программа выведет 3. 2) Например, N = 22. 3) В Python нужно заменить `if d != 2:` на `if d == 2:` и `print(d)` на `print(R)`.
Бұл жауап талдау нәтижесінде алынды, бірақ банктің ресми кілтімен тексерілген жоқ — проверьте выкладки, прежде чем заучивать результат.
Где здесь ошибаются
Указать ответ 2 для числа 324, посчитав цифры 2 вместо фактического вывода ошибочной программы.
Исправить условие на d != 2, хотя оно считает цифры, отличные от 2.
Заменить print(d) на print(R), но не исправить условие.
Предложить новую программу вместо исправления только ошибочных строк.