Форум программистов, компьютерный форум CyberForum.ru

Сумма цифр - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
Bumer@ng
 Аватар для Bumer@ng
0 / 0 / 0
Регистрация: 20.08.2010
Сообщений: 69
20.08.2010, 22:29     Сумма цифр #1
Пользователь вводит с клавиатуры число, необходимо показать на экран сумму его цифр.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.08.2010, 22:29     Сумма цифр
Посмотрите здесь:

C++ Определения, равна сумма цифр целой части вещественного числа сумме такого же количества цифр в дробной части
Найдите такие натуральные числа, чтобы сумма их цифр, а также сумма цифр следующего за ним числа делилась на 7 C++
C++ Найти простые числа, чтобы сумма их цифр, а также сумма цифр следующего за ним числа, делилась на 7
Натуральное число из n цифр является числом Армстронга, если сумма его цифр, возведенных в n-ю степень, равна самому числу C++
Определить для числа: является ли сумма его цифр двузначным числом; больше ли сумма его цифр числа "а" C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,694
20.08.2010, 22:53     Сумма цифр #2
C++
1
2
3
4
5
6
7
8
9
int n=123123;
int sum=0;
 
while (n)
{
    sum+=(n%10);
    n/=10;
}
std::cout  << "SUM: " << sum;
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
20.08.2010, 23:13     Сумма цифр #3
C
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
 
int main(void){
    int num, sum;
    
    printf("Number: ");
    scanf("%d", &num);
    for ( sum = 0; num; num /= 10 )
        sum += num % 10;
    printf("Sum of digits: %d\n", sum);
    
    return 0;
}
outoftime
║XLR8║
 Аватар для outoftime
505 / 427 / 33
Регистрация: 25.07.2009
Сообщений: 2,297
20.08.2010, 23:14     Сумма цифр #4
А покомпактней?
C++
1
2
int n = 123123, ans = 0;
while (n) ans += n % 10, n /= 10;
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2294 / 1664 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
20.08.2010, 23:17     Сумма цифр #5
outoftime, не надо переусердствовать с компактностью в жертву понятности. Оператор следования (,) использовать подобным образом вообще не стоит.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
20.08.2010, 23:17     Сумма цифр #6
Для разнообразия
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
 
int main()
{
    char num[10];
    int sum = 0;
    int i;
    
    printf("Vvedite chislo: ");
    gets(num);
    
    for (i = 0; i < strlen(num); i++)
        sum += (int)num[i] - 48;
    
    printf("Summa cifr vvedennogo chisla: %d", sum);
    
    getch();
    return 0;
}
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,694
20.08.2010, 23:17     Сумма цифр #7
outoftime, какое покомпактней?
Может весь код будет в 1 строку писать? А что, компактно ведь, да?
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
20.08.2010, 23:27     Сумма цифр #8
Цитата Сообщение от outoftime Посмотреть сообщение
А покомпактней?
C
1
2
3
...
for ( sum = 0; num && ( sum = sum + num % 10 ); num /= 10 );
...
half-node
21 / 18 / 3
Регистрация: 12.08.2010
Сообщений: 206
20.08.2010, 23:28     Сумма цифр #9
А я как новичок, предложу вариант новичка
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namspace std;
const int MAX=10;
int main()
{
   int n[MAX];
   int sum,i;
   
   for(i=0; i<MAX; i++)
   {
      cout << "Enter number: ";
      cin >> n[i];
      
   }
   for(i=0; i<MAX; i++)
   {
      sum+=n[i];
   }
    cout << "Sum = " << sum;
    return 0;
}
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
20.08.2010, 23:31     Сумма цифр #10
half-node,
Новичку тоже не помешает быть внимательным... Ну или хотя бы дотошным и проверять код)))
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
20.08.2010, 23:33     Сумма цифр #11
C++
1
do sum += n % 10; while(n /= 10);
half-node
21 / 18 / 3
Регистрация: 12.08.2010
Сообщений: 206
20.08.2010, 23:35     Сумма цифр #12
Цитата Сообщение от silent_1991 Посмотреть сообщение
half-node,
Новичку тоже не помешает быть внимательным... Ну или хотя бы дотошным и проверять код)))
Поправил, да. Спасибо )

Добавлено через 51 секунду
Хотя, подсчет суммы можно и в первый цикл вставить, под конец.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
20.08.2010, 23:39     Сумма цифр #13
half-node,
И тем не менее нет, не отработает. Sum не инициализирована. Да и не очень удобное решение - вводить число поциферно)))
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
20.08.2010, 23:48     Сумма цифр #14
C
1
while ( ( sum += num % 10 ) && ( num /= 10 ) );
half-node
21 / 18 / 3
Регистрация: 12.08.2010
Сообщений: 206
20.08.2010, 23:55     Сумма цифр #15
Цитата Сообщение от silent_1991 Посмотреть сообщение
half-node,
И тем не менее нет, не отработает. Sum не инициализирована. Да и не очень удобное решение - вводить число поциферно)))
Да, с инициализацией дал промаху, согласен
А вот по поводу поциферного ввода, это спорный вопрос. Дело в том, как мне кажется, что пользователю вообще бы хорошо давать выбор, сколько цифр вводить. Это, конечно, малость другой код нежели мой, но все же. Интерфейс пользователя, какой-никакой, а быть должен.

Добавлено через 42 секунды
Цитата Сообщение от easybudda Посмотреть сообщение
C
1
while ( ( sum += num % 10 ) && ( num /= 10 ) );
Скоро на Lisp перейдете
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
20.08.2010, 23:56     Сумма цифр #16
Ну, скажем, в самом оптимальном (и самом первом в теме) решении мы тоже не даём пользователю возможности вводить желаемое количество цифр, потому как оно ограниченно размером типа int.
Но и в таком, да и в моём решении пользователь может удалить уже введённые цифры, а в вашем он такой возможности не имеет.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
20.08.2010, 23:57     Сумма цифр #17
функцЫя
C
1
int sum(int num) { return ( num ) ? num % 10 + sum(num / 10) : 0; }
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
20.08.2010, 23:58     Сумма цифр #18
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iterator>
#include <iostream>
#include <numeric>
 
using namespace std;
 
typedef unsigned char uchar;
 
struct s_sum{
    s_sum() : isEnd(false){}
    uchar operator()(uchar sum, uchar el){
        if( !isdigit(el) ){ isEnd = true; }
        else if( !isEnd ){ return sum+el-'0'; }
        return sum;
    }
private:
    bool isEnd;
};
 
int main(){
  cout <<  (unsigned)accumulate( istream_iterator<uchar>(cin), 
                  istream_iterator<uchar>(), 0, s_sum() );
  return 0;
}
хотя сумма ограниченна, но ничего другого не придумал
half-node
21 / 18 / 3
Регистрация: 12.08.2010
Сообщений: 206
21.08.2010, 00:00     Сумма цифр #19
Даешь многопоточную и многофайловую программу по счету суммы цифр, введенных пользователем!

Добавлено через 44 секунды
Цитата Сообщение от silent_1991 Посмотреть сообщение
Ну, скажем, в самом оптимальном (и самом первом в теме) решении мы тоже не даём пользователю возможности вводить желаемое количество цифр, потому как оно ограниченно размером типа int.
Но и в таком, да и в моём решении пользователь может удалить уже введённые цифры, а в вашем он такой возможности не имеет.
Ваше ... слаще! Не спорю. Оставим полемику на данную тему
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.08.2010, 00:06     Сумма цифр
Еще ссылки по теме:

C++ Найти все четырёхзначные числа, у которых сумма крайних цифр равна сумме средних цифр, а само число делится на 6 и 27
Рекурсия: количество цифр в числе, сумма цифр и реверс числа C++
Написать программу: сумма первых трех цифр числа равна сумме его последних трех цифр. C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
21.08.2010, 00:06     Сумма цифр #20
half-node,
Извините, не выдержал))) Ещё у вас есть возможность ввести в качестве цифры число, состоящее из более чем одной цифры, что не есть гуд))) Вот теперь закончим)))
Yandex
Объявления
21.08.2010, 00:06     Сумма цифр
Ответ Создать тему
Опции темы

Текущее время: 12:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru