Всем привет, извиняюсь за дурацкую формулировку темы. Мучался, но ничего не получается видимо из за плохих знаний языка, пишу на си. Есть число int a = 98745; моя задача, привести это число в одно путем сложения, т.е. 9 + 8 + 7 + 4 + 5 = 33, далее 33 - это два числа 3 и 3, 3 + 3 = 6, т.е. нужно программно получить число 6. пните плз мыслью как это сделать.
ilja_ Не нужно ничего разбивать. Задачка на простую арифметику. Эта сумма равна остатку от деления на 9... ну с поправкой на то, что нуль в остатке соответствует девятке при нахождении суммы цифр. Т.е. с учётом поправки код примерно такой: result = ((num % 9) + 8) % 9 + 1;
Всем спасибо за ответы Сделал так: Код (Text): DWORD dwSum = 4956; DWORD b[4]; b[0] = dwSum % 10; // 6 b[1] = ( dwSum / 10 ) % 10; // 5 b[2] = ( ( dwSum / 10 ) / 10 ) % 10; //9 b[3] = ( ( ( dwSum / 10 ) / 10 ) / 10 ) % 10; //4 осталось сделать все в цикле
ilja_ в цикле суммируете остатки от деления на 9, до тех пор пока не получите нулевое частное, потом тоже самое с суммой и так пока суммы не кончатся
На 10 вообще-то... Вот реализация в лоб: Код (Text): int mega_sum(int x) { int tmp, sum=x; while(sum/10) { tmp=sum; sum=0; while(tmp) { sum+=tmp % 10; tmp/=10; } } return sum; }
l_inc У тебя 0 не правильно обрабатывается (сумма цифр нуля явно не 9), а если считать что num больше нуля, то короче будет result = (num - 1) % 9 + 1;