На обработку поступает натуральное число, не превышающее 10^9. нужно написать программу, которая выводит на экран произведение цифр числа, кратных 3. если в числе нет цифр, кратных 3, требуется на экран вывести "no". программист написал программу неправильно. напоминание: 0 делится на любое натуральное число. текст написанной программистом программы (с ошибками): var n, k, digit, prod: longint; begin readln(n); prod : = n mod 10; k : = 0; while (n > 0) do begin digit : = n mod 10; if (digit mod 3 = 0) then begin prod : = prod*digit; k : = k+1; end; n : = n div 10; end; if (k = 0) then writeln('no') else writeln(n) end. найдите все ошибки в этой программе и исправьте их, при этом не меняя весь алгоритм. как правило, ошибок две. я их нашёл, но мне не засчитали. найти ошибки в программе, из-за которых алгоритм работает неверно!
243
398
Ответы на вопрос:
Var n, k, digit, prod: longint; begin readln(n); prod : = 1; // произведение не должно быть равно 0, в вашем случае просто отделают последнюю цифру, не проверяя ее кратна она 3 или нет k : = 0; while (n > 0) do begin digit : = n mod 10; if (digit mod 3 = 0) and (digit< > 0) then begin // (digit< > 0) проверка на неравенство нулю(любое число*0=0) prod : = prod*digit; k : = k+1; end; n : = n div 10; end; if (k = 0) then writeln('no') else writeln(prod) // выводить нужно не конечное n, а именно произведение(prod) end.
Популярно: Информатика
-
dmtrysuraev24.02.2022 03:17
-
umka234515.02.2021 01:40
-
Kara2006kara11.05.2021 11:48
-
HatryGG11.08.2020 12:11
-
komikadza13.05.2021 21:56
-
Руслан555111128.11.2021 16:20
-
9208328.09.2020 22:56
-
margoskliar29.10.2020 10:09
-
MilenaNasifullina11.04.2020 13:58
-
petranikeev15.02.2023 02:08