Задача #1984

Условие

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

Бейсик Python
DIM N, DIGIT, MAXDIGIT AS LONG
INPUT N
MAXDIGIT = 9
WHILE N > 0
    DIGIT = N MOD 10
    IF DIGIT MOD 3 = 0 THEN
        IF DIGIT < MAXDIGIT THEN
            MAXDIGIT = DIGIT
        END IF
    END IF
    N = N \ 10
WEND
IF MAXDIGIT = 9 THEN
    PRINT "NO"
ELSE
    PRINT MAXDIGIT
END IF
N = int(input())
maxDigit = 9
while N > 0:
    digit = N % 10
    if digit % 3 == 0:
        if digit < maxDigit:
            maxDigit = digit
    N = N // 10
if maxDigit == 9:
    print("NO")
else:
    print(maxDigit))
Паскаль Алгоритмический язык
var N,digit,maxDigit: longint;
begin
    readln(N);
    maxDigit := 9;
    while N > 0 do
    begin
        digit := N mod 10;
        if digit mod 3 = 0 then
            if digit < maxDigit then
                maxDigit := digit;
            N := N div 10;
    end;
    if maxDigit = 9 then
        writeln('NO')
    else
        writeln(maxDigit)
end.
алг
нач
    цел N, digit, maxDigit
    ввод N
    maxDigit := 9
    нц пока N > 0
        digit := mod(N,10)
        если mod(digit, 3) = 0 то
            если digit < maxDigit то
                maxDigit := digit
            все
        все
        N := div(N,10)
    кц
    если maxDigit = 9 то
        вывод "NO"
    иначе
        вывод maxDigit
    все
кон
С++
#include
using namespace std;
int main() {
        long N, digit, maxDigit;
        cin >> N;
        maxDigit = 9;
        while (N > 0) {
            digit = N % 10;
            if (digit % 3 == 0)
                if (digit < maxDigit)
                    maxDigit = digit;
            N = N / 10;}
        if (maxDigit == 9)
            cout << "NO" << endl;
        else
            cout << maxDigit << endl;
        return 0;}

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

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

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

Правильный ответ: Смотри решение

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

Комментарии

Для добавления комментариев необходимо авторизоваться.