Блог репетитора по информатике

Цифры в ряд

Сегодня мы рассмотрим стандартный алгоритм обработки цифр числа, для этого мы разберем самую простую задачу: Дано натуральное число, найти сумму цифр этого числа.

Что нам дано по условию задачи? С клавиатуры вводится целое положительное число больше нуля. Об этом нам стало понятно из строчки "Дано натуральное число". Количество разрядов в числе нам за ранее не известно.  

Рассуждаем дальше. Как получить цифру числа? И здесь мы должны вспомнить две операции, которые обязательно есть в любом языке программирования: целочисленное деление (div, /, //) и остаток от деления (mod, %). Операция "mod 10"  - получает младший разряд числа, а " div 10" - отбрасывает младший разряд.

Значит в алгоритме мы должны организовать цикл, в котором мы будем получать текущий младший разряд числа, затем довалять его в сумму и отрбрасывать его для того, чтобы на следующей итерации работать с более старшим разрядом. 

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

Какое условие нужно записать для работы цикла? Здесь лучше рассуждать от противоположного: когда цикл должен законичить работу? Цикл должен закончить работу, когда в рассматриваемом числе не останется цифр (число станет равно 0). Почему это произойдет? В цикле последней операцией будет операция отбрасывание младшего разряда, а значит мы рано или поздно отбросим все раздряды и получим ноль.

Сделаем вывод, что цикл должен закончится когда введенное число станет равно нулю, а работать цикл должен кода данное число ещё больше ноля (цифры есть).

И еще один вопрос: как подсчитать сумму цифр? Для этого используем формулу накопления. Новое значение переменной равно старому значеню (то, что в ней было до этой операции) плюс новый элемент (в данном случае текущая цифра числа). Но здесь нужно помнить, что переменную, в которую мы записываем сумму, нужно до цикла инициализировать, то есть занести начальное значение (обычно это ноль).

Алгоритм представлне на рисунке.

алгоритм Сумма цифр числа

Ниже представлены алгритмы на трех языках