Помогите пожалуйста! ** вход программы поступает натуральное число, не превышающее 10^9...

0 голосов
200 просмотров

Помогите пожалуйста!
На вход программы поступает натуральное число, не превышающее 10^9 Нужно написать
программу, которая выводит на экран максимальную цифру числа, меньшую 5 Если в числе нет цифр,
меньших 5, требуется на экран вывести «NO». В приведённой программе есть ошибки.
var N, d, m: longint;
begin
readln(N);
m := N mod 10;
while N > 0 do begin
d := N mod 10;
if d < 5 then
if d > m then m := d;
N := N div 10;
end;
if m = 0 then
writeln('NO')
else writeln( m )
end.
Последовательно выполните следующее.
1 Напишите, что выведет эта программа при вводе числа 157
2 Укажите наибольшее трёхзначное значение входной переменной n, при вводе которого
программа выведет правильный ответ. Укажите это ответ.
3 Найдите в программе все ошибки (их может быть одна или несколько). Для каждой ошибки
выпишите строку, в которой она допущена, и приведите эту же строку в исправленном виде.


Информатика (543 баллов) | 200 просмотров
Дан 1 ответ
0 голосов

1) 7  - изза начального присвоение m
2) 994. 4 соответствует условию, остальные числа лишь максимизируют число
3)

var
    N, d, m: longint;

begin
    readln(N);
    {m := N mod 10; ошибочная строка}
    m:=-1; {N mod 10 - может не удовлетворять условию, 0 - может и удовлетворять условию }
    while N > 0 do
    begin
        d := N mod 10;
        if d < 5 then
            if d > m then m := d;
        N := N div 10;
    end;
    {if m = 0 then ошибочная строка}
    if m = -1 then {если в цикле m так не разу и не поменялась}
        writeln('NO')
    else writeln(m);
end.

(53.1k баллов)