Определите, что будет напечатано в результате выполнения следующего алгоритма
var a,b:integer;
begin
a:=0;
b:=2364;
while b>0 do begin
if b mod 10<5 then
a:=a+b mod 10;
b:=b div 10;
end;
writeln(a);
end.

объясните, как решать, пожалуйста.

1

Ответы и объяснения

2013-05-14T18:58:45+00:00

Есть две переменные а и б
Изначально а=0, б=2364

 

Пока б будет больше 0 он будет выполнять следующие действия:

если остаток от б/10 меньше нуля тогда к А прибавляется этот остаток.
 Б делим на 10 и повторяем

 

Вывод А

 

Сама задача вычисляет сумму цифр в числе которые меньше 5.
Дано Б = 2364.

Задача смотрит остаток от 2364 mod 10 = 4

4 меньше пяти соответственно в А=4

далее 2364/10=236

 

теперь 236 mod 10 = 6

6 больше пяти поэтому ниче не делаем

236 div 10 = 23

 

теперь 23 mod 10 = 3

3 меньше пяти соответственно А=А+3 = 4+3 = 7

23 див 10 = 2

 

теперь 2 mod 10 = 2

2 меньше 5 соответственно А=А+3 = 7+2 = 9

2 див 10 = 0

 

Так как Б=0 программа выходит из цикла и выводит А, т.е. число 9