Задачи по Pascal. Сумма цифр в числе

pascalУсловие задачи : Найти сумму цифр в числе. Число вводит пользователь.

Сложность : легкая .

Подобная задача уже была разобрана (ссылка), но там мы искали сумму цифр зная , что число трехзначное. Сейчас же число вводит пользователь и нам не известно сколько в нем цифр.

Для решения задачи нам понадобятся операции div и mod. Что мы будем делать?

Сначала пустим цикл и в нем уже произойдет следующее. Допустим у нас число 732405. Мы применяем операцию mod чтобы отсеять одну цифру и сразу прибавляем её к сумме. А у числа 732405 мы убираем последнюю цифру с помощью операции div.

Число 732405

1-й проход цикла

sum := 0 + (732405 mod 10); {В sum сохраняется 5}
number := (732405 div 10); {В number сохраняется 73240}

2-й проход цикла

sum := 5 + (73240 mod 10); {В sum сохраняется 5+0}
number := (73240 div 10); {В number сохраняется 7324}

3-й проход цикла

sum := 5 + (7324 mod 10); {В sum сохраняется 5+0+4}
number := (7324 div 10); {В number сохраняется 732}

4-й проход цикла

sum := 9 + (732 mod 10); {В sum сохраняется 5+0+4+2}
number := (732 div 10); {В number сохраняется 73}

5-й проход цикла

sum := 11 + (73 mod 10); {В sum сохраняется 5+0+4+2+3}
number := (73 div 10); {В number сохраняется 7}

6-й проход цикла

sum := 14 + (7 mod 10); {В sum сохраняется 5+0+4+2+3+7}
number := (7 div 10); {В number сохраняется 0}

Сумма равна 21.

Цикл у нас будет while и будет он выполняться пока :

number > 0

т.е. когда у нас число станет равно нулю это будет означать что цифр в числе больше нет.

Весь код программы :

uses crt;
var
     sum: integer;
     number: longint;
begin
 clrscr; {очищаем экран}
 sum := 0;
 write('Введите число: ');
 readln(number);
 number := abs(number); // убираем знак - , если введенное число будет отрицательным 

 while number > 0 do
  begin
    {Делим число на 10 и получаем остаток от деления т.е. крайнюю правую цифру числа}
    sum := sum + (number mod 10);
    {Делим число на 10 и получаем целую часть числа т.е. отбрасываем крайнюю правую цифру от числа}
    number := (number div 10);
  end;
 writeln('Сумма цифр числа = ', sum);
 readln;
end.

Вот результат :

ris113