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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
Bumer@ng
 Аватар для Bumer@ng
0 / 0 / 0
Регистрация: 20.08.2010
Сообщений: 69
#1

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

20.08.2010, 22:29. Просмотров 1305. Ответов 29
Метки нет (Все метки)

Пользователь вводит с клавиатуры число, необходимо показать на экран сумму его цифр.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.08.2010, 22:29     Сумма цифр
Посмотрите здесь:

C++ Натуральное число, в котором n цифр, если сумма цифр возведённая в nую степень равна числу то вы вывесте число на экран(интервал чисел от 1 до k)
Сумма цифр и количество цифр C++
C++ сумма цифр
Сумма цифр чисел C++
Сумма цифр делится на K C++
C++ Сумма отделенных цифр
Натуральное число из n цифр является числом Армстронга, если сумма его цифр, возведенных в n-ю степень, равна самому числу C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
neske
1455 / 822 / 68
Регистрация: 26.03.2010
Сообщений: 2,811
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
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
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
2297 / 1667 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
20.08.2010, 23:17     Сумма цифр #5
outoftime, не надо переусердствовать с компактностью в жертву понятности. Оператор следования (,) использовать подобным образом вообще не стоит.
silent_1991
Эксперт C++
4949 / 3025 / 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
1455 / 822 / 68
Регистрация: 26.03.2010
Сообщений: 2,811
20.08.2010, 23:17     Сумма цифр #7
outoftime, какое покомпактней?
Может весь код будет в 1 строку писать? А что, компактно ведь, да?
easybudda
Эксперт С++
 Аватар для easybudda
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
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++
4949 / 3025 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
20.08.2010, 23:31     Сумма цифр #10
half-node,
Новичку тоже не помешает быть внимательным... Ну или хотя бы дотошным и проверять код)))
rangerx
1920 / 1529 / 139
Регистрация: 31.05.2009
Сообщений: 2,892
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++
4949 / 3025 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
20.08.2010, 23:39     Сумма цифр #13
half-node,
И тем не менее нет, не отработает. Sum не инициализирована. Да и не очень удобное решение - вводить число поциферно)))
easybudda
Эксперт С++
 Аватар для easybudda
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
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++
4949 / 3025 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
20.08.2010, 23:56     Сумма цифр #16
Ну, скажем, в самом оптимальном (и самом первом в теме) решении мы тоже не даём пользователю возможности вводить желаемое количество цифр, потому как оно ограниченно размером типа int.
Но и в таком, да и в моём решении пользователь может удалить уже введённые цифры, а в вашем он такой возможности не имеет.
easybudda
Эксперт С++
 Аватар для easybudda
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
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++ Подсчитать количество "счастливых" шестизначных автобусных билетов(сумма первых трех цифр равна сумме трех последних цифр)
C++ Сумма цифр числа
C++ Сумма цифр числа
C++ Произведение цифр/сумма цифр
C++ Вычислить число положительных целых, меньших n, таких, что их сумма цифр равна сумме цифр в n

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

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

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