Требовалось написать программу, при выполнении которой с клавиатуры считывается...

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

Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число 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. Найдите все ошибки в этой программе ( их может быть одна или несколько).


Информатика (15 баллов) | 82 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

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 и т.д.

(10.7k баллов)