Разберемся, что нам надо сделать. Чтобы найти сумму цифр, нужно как-то эти цифры в числе выделить. Так как у нас позиционная запись числа (математики поняли меня и информатики тоже)))), то при делении на 10 нацело мы получаем в остатке последнюю цифру числа. Например:
134\10 = 13 (остаток 4)
Операция вычисления остатка от деления %. То есть в предыдущем примере цифру 4 можно было получить так:
134%10=4
Теперь эту цифру нужно запомнить или сразу внести в сумму. А значит, нужно выделить ячейку для сохранения суммы s. Естественно, ее начальное значение s=0. Как получить цифру десятков? Но ведь при делении на 10 число уменьшилось в 10 раз (смотри пример). То есть его последняя цифра и есть количество десятков. Можно опять вычислить остаток от деления на 10. И так, пока не получим все цифры. Разберем пример полностью: s=0
134%10=4
s=s+4=4
134\10=13
13%10=3
s=s+3=4+3=7
13\10=1
1%10=1
s=s+1=4+3+1=8
Результат получен. Можно заметить, что деление нацело, остаток от деления на 10 и увеличение суммы нам пришлось делать трижды. То есть в программе можно организовать цикл. Так как количество цифр в числе нам неизвестно - по условию число вводит пользователь, то используем цикл ПОКА (пока выполняется условие, делай...).
Еще один важный момент. Не рекомендуется изменять введенное число - вдруг оно нам еще понадобится! Поэтому число лучше копировать и работать с его копией. А само число пусть хранится в ячейке до лучших времен.
Программа
cls - очистка экрана
input n - ввод числа пользователем m=n - копируем введенное число, чтобы можно было изменять не само число, а его копию.
s=0 - начальное значение суммы цифр числа
while m > 0.9 - пока m >0,9 (можно взять условие пока m<>1)
p=m%10 - вычисли остаток от деления m на 10, получаем последнюю цифру записи
s=s+p - увеличь сумму цифр числа на последнюю цифру
m=m\10 - раздели m на 10 нацело, при этом мы уменьшаем число на порядок (в 10 раз)
end while - повтори, если условие еще не выполнено и закончи цикл, если оно уже выполнено
print s - выведи сумму на экран
|