РУҚА
24

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

ЕГЭ · Информатика · Тапсырма 24 · Бағдарламалау негіздері
ЖоғарыФИПИ2B38DCТолық шешім≈ 15 минут

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

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

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

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

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

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

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

Бейсик

Python

DIM N, DIGIT, COUNT AS LONG

INPUT N

COUNT = 1

WHILE N > 0

DIGIT = N MOD 10

IF DIGIT MOD 3 = 0 THEN

COUNT = COUNT + DIGIT

END IF

N = N \ 10

WEND

IF COUNT = 0 THEN

PRINT "NO"

ELSE

PRINT COUNT

END IF

N = int(input())

count = 1

while N > 0:

digit = N % 10

if digit % 3 == 0:

count = count + digit

N = N // 10

if count == 0:

print("NO")

else:

print(count)


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

Паскаль

алг

нач

цел N, digit, count

ввод N

count := 1

нц пока N > 0

digit := mod(N,10)

если mod(digit,3) = 0 то

count := count + digit

все

N := div(N,10)

кц

если count = 0 то

вывод "NO"

иначе

вывод count

все

кон

var N, digit, count: longint;

begin

readln(N);

count := 1;

while N > 0 do

begin

digit := N mod 10;

if digit mod 3 = 0 then

count := count + digit;

N := N div 10;

end;

if count = 0 then

writeln('NO')

else

writeln(count)

end.

С++

#include <iostream>

using namespace std;

int main()

{

int N, digit, count;

cin >> N;

count = 1;

while (N > 0)

{

digit = N % 10;

if (digit % 3 == 0)

count = count + digit;

N = N / 10;

}

if (count == 0)

cout << "NO" << endl;

else

cout << count << endl;

return 0;

}

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

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

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

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

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

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

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

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



Жауап

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

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

Проследите отдельно за значениями переменных $N$, digit и count при обработке числа 145.

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

Программа должна увеличивать count на единицу за каждую подходящую цифру, а начальное количество найденных цифр равно нулю.

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

Для числа 145 подходящих цифр нет, но программа выводит 1. Ошибочны строки count = 1 и count = count + digit; их следует заменить на count = 0 и count = count + 1.

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

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

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

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