Решение: Исправление программы подсчёта цифр
Требовалось написать программу, которая получает на вход натуральное число $N$, не превосходящее $10^9$, и выводит число, равное количеству цифр 4 в десятичной записи числа $N$. Программист написал программу неправильно. Ниже приведена его программа на языке Python:
```python
N = int(input())
R = 0
while N > 0:
d = N % 10
if d != 4:
R = R + d
N = N // 10
print(R)
```
Последовательно выполните следующие действия:
1. Напишите, что выведет программа при вводе числа 241.
2. Приведите пример входного числа $N$, при котором программа, несмотря на ошибки, выдаёт верный ответ.
3. Найдите допущенные программистом ошибки и исправьте их. Исправление каждой ошибки должно затрагивать только строку, в которой находится ошибка. Для каждой ошибки выпишите ошибочную строку и приведите её правильный вариант. Известно, что для правильной работы программы нужно исправить не более двух строк.
Решение по шагам
5 шаговПри вводе 241 цифры извлекаются справа налево: 1, 4, 2. При текущем условии программа прибавляет к R все цифры, не равные 4.
$$R = 1 + 2 = 3$$Следовательно, при вводе числа 241 программа выведет 3.
Подойдёт, например, число 14. В его записи одна цифра 4, поэтому правильный ответ равен 1. Ошибочная программа пропускает цифру 4 и прибавляет цифру 1, поэтому также выводит 1.
Первая ошибка находится в условии: программа обрабатывает цифры, не равные 4, а должна обрабатывать цифры, равные 4.
$$d \ne 4 \rightarrow d = 4$$Вторая ошибка находится в изменении счётчика: при обнаружении цифры 4 нужно увеличить счётчик на единицу, а не прибавлять значение цифры.
$$R = R + d \rightarrow R = R + 1$$1) 3. 2) Например, $N = 14$. 3) В Python исправить две строки: `if d != 4:` заменить на `if d == 4:`, а `R = R + d` заменить на `R = R + 1`.
Этот ответ получен в разборе, но не сверен с официальным ключом из банка — проверьте выкладки, прежде чем заучивать результат.
Где здесь ошибаются
Ответить 1 для числа 241, посчитав количество цифр 4 вместо фактического результата ошибочной программы.
Заменить только условие, но оставить прибавление значения цифры.
Предложить полностью новую программу вместо исправления только ошибочных строк.
Привести пример числа, для которого результат программы не совпадает с количеством цифр 4.