Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число n, не превосходящее 10^9, и выводится сумма цифр этого числа. программист торопился и написал программу неправильно: var n: longint; sum, d: integer; begin readln(n); sum : =0; while n > 0 do begin d : = n mod 10; n : = n div 10; sum : = sum + 1; end; writeln(sum); end. последовательно выполните следующее. 1. напишите, что выведет эта программа при вводе числа 256. 2. пример такого трехзначного числа, при вводе которого программа выдаёт правильный результат. 3. найдите все ошибки в этой программе ( их может быть одна или несколько).

SuperPuper131 SuperPuper131    1   29.06.2019 09:10    3

Ответы
Farxadkishi Farxadkishi  02.10.2020 15:02
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 и т.д.
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика