Глиф Учебники

Сумма цифр числа

Справочник · Pascal · 1 минута чтения

Берите последнюю цифру через mod 10 и отбрасывайте её через div 10, пока число не станет нулём:

Pascal
program DigitSum;
var
  n, sum: longint;
begin
  readln(n);
  n := abs(n);
  sum := 0;
  while n > 0 do
  begin
    sum := sum + n mod 10;
    n := n div 10;
  end;
  writeln('Сумма цифр: ', sum);
end.
Ввод
4096
Вывод
Сумма цифр: 19

Как идёт цикл для 4096:

nn mod 10sumn div 10
409666409
40991540
400154
44190

На нуле цикл останавливается.

Отрицательные числа и ноль

Тот же приём для других задач

Pascal
program DigitTasks;
var
  n, count, prod, rev, d: longint;
begin
  readln(n);
  count := 0;
  prod := 1;
  rev := 0;
  repeat
    d := n mod 10;
    count := count + 1;
    prod := prod * d;
    rev := rev * 10 + d;
    n := n div 10;
  until n = 0;
  writeln('Цифр: ', count);
  writeln('Произведение цифр: ', prod);
  writeln('Наоборот: ', rev);
end.
Ввод
1234
Вывод
Цифр: 4
Произведение цифр: 24
Наоборот: 4321

Программа рассчитана на неотрицательные числа; для отрицательных добавьте n := abs(n) после ввода.

Через строку

Если число записано строкой (или очень длинное), цифры берут по символам: ord(s[i]) - ord('0'). Пример — в справке Как перевести число в строку и обратно.

Подводные камни