24

Исправление программы подсчёта цифр

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

Требовалось написать программу, которая получает на вход натуральное число $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. Найдите допущенные программистом ошибки и исправьте их. Исправление каждой ошибки должно затрагивать только строку, в которой находится ошибка. Для каждой ошибки выпишите ошибочную строку и приведите её правильный вариант. Известно, что для правильной работы программы нужно исправить не более двух строк.

Условие как в банке ФИПИ — открыть и сверить
Дайте развернутый ответ.

Требовалось написать программу, которая получает на вход натуральное число N, не превосходящее 109, и выводит число, равное количеству цифр 4 в десятичной записи числа N. Программист написал программу неправильно. Ниже написанная им программа для Вашего удобства приведена на пяти языках программирования.

Бейсик

Python

DIM N AS LONG

DIM R, d AS INTEGER

INPUT N

R = 0

WHILE N > 0

d = N MOD 10

IF d <> 4 THEN

R = R + d

END IF

N = N \ 10

WEND

PRINT R

END

N = int(input())

R = 0

while N > 0:

d = N % 10

if d != 4:

R = R + d

N = N // 10

print(R)

Алгоритмический язык

Паскаль

алг

нач

цел N, R, d

ввод N

R := 0

нц пока N > 0

d := mod(N, 10)

если d <> 4 то

R := R + d

все

N := div(N, 10)

кц

вывод R

кон

var N: longint;

R, d: integer;

begin

readln(N);

R := 0;

while N > 0 do begin

d := N mod 10;

if d <> 4 then

R := R + d;

N := N div 10;

end;

writeln(R);

end.

С++

#include <iostream>

using namespace std;

int main()

{

long int N;

int R, d;

cin >> N;

R = 0;

while (N > 0) {

d = N % 10;

if (d != 4) {

R = R + d;

}

N = N / 10;

}

cout << R << endl;

return 0;

}

Последовательно выполните следующее.

1. Напишите, что выведет эта программа при вводе числа 241.

2. Приведите пример входного числа N, при котором приведённая программа, несмотря на ошибки, выдаёт верный ответ.

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

1) выпишите строку, в которой сделана ошибка;

2) укажите, как исправить ошибку, т.е. приведите правильный вариант строки.

Известно, что в тексте программы нужно исправить не более двух строк так, чтобы она стала работать правильно.

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

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



Ответ

Это задание с развёрнутым решением: ответом считается запись хода решения, а не строка. Напишите решение на бумаге и сравните с разбором — там каждый шаг с обоснованием.

Открыть разбор
!
3 уровня: от лёгкого толчка до почти готового решения. Следующий открывается, когда прочитан предыдущий, — чтобы не перепрыгнуть сразу к ответу.
1Мягкая — с чего смотретьуровень 1 из 3

Какие цифры числа 241 последовательно извлекаются при делении на 10 с остатком?

2Наводящая — какие числа считатьуровень 2 из 3

Для подсчёта цифр 4 нужно увеличивать счётчик на 1 только при условии $d = 4$.

3Прямая — фактически решениеуровень 3 из 3

Для числа 241 программа складывает цифры 1 и 2, пропуская цифру 4. Исправьте условие на `d == 4`, а прибавление замените на `R = R + 1`.

Всё равно не складывается?Полное решение с обоснованием каждого шага — на отдельной странице.
Открыть решение

Задание 24 ЕГЭ, информатика

Задача из темы «Основы программирования»: в ней 160 задач с ответом и разбором по шагам. В 24-м номере бланка — 80 задач.

Ответ можно проверить здесь же, а если не выходит — открыть подсказку или разбор. Регистрация не нужна.