Сначала надо избавиться от ошибок (пункт №3) иначе не сможем выполнить 1 и 2 пункт задания. Исправляем if N mod 10 k:=N mod 10; на if (N mod 10 < k) then k:=N mod 10; Исправляем N:N div 10; на N:= N div 10;
После исправления ошибок при вводе 537 получим 3 Программа будет работать правильно для любого числа, у которого вторая цифра слева меньше первой цифры, например: 7193
Чтобы программа работала правильно для всех чисел надо изменить это: while N > 10 do на while N > 0 do
После всех исправлений код программы стал таким: var N, k: integer; begin readln(N); k := 9; while N > 10 do begin if (N mod 10 < k) then k := N mod 10; N := N div 10; end; write(k) end.
1) При вводе числа 256 программа выведет 3, т.к. ввели n=256 n>0 ? - да, значит дальше идёт блок из цикла, и будет он повторятся до тех пор пока n будет >0. d:=256 mod 10 d:=6, т.к. mod берёт остаток от деления. n:=256 div 10 n:=25, т.к. div делит нацело и остаток не берёт. sum:=sum+1; sum:=1;
цикл первый раз закончился и опять проверяется условие n>0, если да, то опять запускает цикл. n:=25>0 d:=25 mod 10 d:=5 n:=25 div 10 n:=2 sum:=1+1 sum:=2;
опять закончился цикл и проверяется условие n>0, n:=2>0 d:=2 mod 10; d:=2; n:=2 div 10 n:=0 sum:=2+1; sum:=3;
заканчивается цикл и проверяется условие n>0? n:=0 >0 - нет. цикл заканчивается и выводится значение sum. ответ: 3. 2) 120, 210, 111 и т.д.
иначе не сможем выполнить 1 и 2 пункт задания.
Исправляем if N mod 10 k:=N mod 10; на if (N mod 10 < k) then k:=N mod 10;
Исправляем N:N div 10; на N:= N div 10;
После исправления ошибок при вводе 537 получим 3
Программа будет работать правильно для любого числа,
у которого вторая цифра слева меньше первой цифры, например:
7193
Чтобы программа работала правильно для всех чисел надо
изменить это: while N > 10 do на while N > 0 do
После всех исправлений код программы стал таким:
var
N, k: integer;
begin
readln(N);
k := 9;
while N > 10 do
begin
if (N mod 10 < k) then k := N mod 10;
N := N div 10;
end;
write(k)
end.
ввели n=256
n>0 ? - да, значит дальше идёт блок из цикла, и будет он повторятся до тех пор пока n будет >0.
d:=256 mod 10
d:=6, т.к. mod берёт остаток от деления.
n:=256 div 10
n:=25, т.к. div делит нацело и остаток не берёт.
sum:=sum+1;
sum:=1;
цикл первый раз закончился и опять проверяется условие n>0, если да, то опять запускает цикл. n:=25>0
d:=25 mod 10
d:=5
n:=25 div 10
n:=2
sum:=1+1
sum:=2;
опять закончился цикл и проверяется условие n>0, n:=2>0
d:=2 mod 10;
d:=2;
n:=2 div 10
n:=0
sum:=2+1;
sum:=3;
заканчивается цикл и проверяется условие n>0? n:=0 >0 - нет. цикл заканчивается и выводится значение sum.
ответ: 3.
2) 120, 210, 111 и т.д.