
Вопрос задан 23.04.2018 в 05:05.
Предмет Информатика.
Спрашивает Синявский Миша.
На обработку поступает натуральное число, не превышающее 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. Найдите все ошибки в этой программе и исправьте их, при этом не меняя весь алгоритм. Как правило, ошибок две. Я их нашёл, но задание мне не засчитали. Помогите найти ошибки в программе, из-за которых алгоритм работает неверно!

Ответы на вопрос

Отвечает Шеметова Настя.
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.


Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
Предметы
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili