РУҚА
24

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

ЕГЭ · Информатика · Тапсырма 24 · Бағдарламалау негіздері
КүрделіФИПИ31077AТолық шешім≈ 10 минут

Требовалось написать программу, которая получает на вход натуральное число $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)

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

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

Бейсик

Python

DIM N AS LONG

DIM R, d AS INTEGER

INPUT N

R = 0

WHILE N > 0

d = N MOD 10

IF d <> 2 THEN

R = R + 1

END IF

N = N \ 10

WEND

PRINT d

END

N = int(input())

R = 0

while N > 0:

d = N % 10

if d != 2:

R = R + 1

N = N // 10

print(d)

Алгоритмический тіл

Паскаль

алг

нач

цел N, R, d

ввод N

R := 0

нц пока N > 0

d := mod(N, 10)

если d <> 2 то

R := R + 1

все

N := div(N, 10)

кц

вывод d

кон

var N: longint;

R, d: integer;

begin

readln(N);

R := 0;

while N > 0 do begin

d := N mod 10;

if d <> 2 then

R := R + 1;

N := N div 10;

end;

writeln(d);

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 != 2) {

R = R + 1;

}

N = N / 10;

}

cout << d << endl;

return 0;

}

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

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

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

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

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

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

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

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

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



Жауап

Это задание с развёрнутым решением: ответом считается шешімнің барысын жазу, жол емес. Шешімді қағазға жазып, салыстырыңыз с разбором — там каждый шаг с обоснованием.

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

Проследите отдельно, какие значения принимает переменная d, как изменяется R и какая переменная выводится после завершения цикла.

2Жетекші — қандай сандарды есептеудеңгей 2 из 3

Чтобы посчитать цифры 2, условие должно быть истинным именно тогда, когда d равно 2. После цикла нужно вывести накопленный счётчик.

3Тікелей — іс жүзінде шешімдеңгей 3 из 3

Для числа 324 значения d равны 4, 2, 3, поэтому программа выводит 3. Исправления в Python: `if d != 2:` заменить на `if d == 2:`, а `print(d)` — на `print(R)`.

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

Тапсырма 24 ЕГЭ, информатика

Задача из темы «Бағдарламалау негіздері»: в ней 160 задач жауабымен және қадамдық талдауымен. В 24-м номере бланка — 80 задач.

Жауапты осы жерде тексеруге болады, ал егер шықпаса — ашуға болады көмекші кеңес немесе талдау. Тіркелу қажет емес.