среда, 12 января 2011 г.

найти сумму цифр числа

когда стоит такая задача следует наверное уточнить в какой системе счисления оно представлено,
например число 15 в двоичной системе представляет собой 1111, и соотвтественно складывать нужно 1+1+1+1 = 4, что согласитесь не одно и тоже если бы мы сладывали 1+5=6 в дестятичной...

но так как наверняка(!) подразумеваеся десятичная система, к которой мы так все привыкли, то задание сводится к разделению числа на разряды, как то

156 = 1 + 5 + 6

как же нам получить эти 1, 5 и 6?

оказывается - очень просто! незабываем о том что система счисления по основанию 10, а это значит, что если поделить наше 156 на 10 мы получим целую часть и остаток от деления

156 делим на десять - целая часть 15, а остаток 6 (вот оно наше первое число!! только с конца)
теперь делим целую часть снова на 10 (основание системы счисления)
15 делим на десять - целая часть 1, а остаток 5 (вот оно наше второе число!!)
и так продолжаем делить пока есть что делить
1 делим на десять - целая часть... а ее уже нету! т.е. 0 (для нас это сигнал, что нужно заканчивать деление), а остаток 1 (наше последнее число!!!)

осталось лишь все сложижить 6 +  5 + 1 и получить искомую сумму 12

ну а теперь несколько слов, о том как это реализовать в том или ином языке программирования.
в каждом языке на сколько мне известно существуют специальные операторы для нахождения целого от деления или остатка (так называемое деление по модулю)

ну скажем С\С++

int n = 156;
int ostatok = 156 % 10; // тут будет 6
n = n / 10; //тут будет 15

ну и вот такой кусочек кода подсчитает сумму

int summa = 0;
int n = 156;
while (n)
{
summa += n % 10;
n = n / 10;
}
printf("summa: %d\n", summa); //вывод на экран

или как это сделать на javascript (js)

function getSum(var n)
{
     var sum = 0;
     while (n)
     {
           sum += n % 10;
           n = Math.floor(n / 10); //берем целую часть от деления, т.е .округляем до меньшего
     }

     return sum;
}

мы о чем то забыли?..

Комментариев нет:

Отправить комментарий