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

Вывести сумму цифр числа - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.62
im_Kudrik
0 / 0 / 0
Регистрация: 17.11.2011
Сообщений: 20
17.11.2011, 16:41     Вывести сумму цифр числа #1
смысл задачи такой : мы вводим двузначное число ,нужно вывести сумму его цифр ,если сумма цифр снова двузначное число ,то снова складываем эти цифры ,и так до тех пор ,пока не получится однозначное цисло .И еще ,нужно вывести количество операций которые мы выполняем при этом вот пример : вводим 10 выводится 1 0
вводим 88 выводится 7 2

большая просьба решить через string ,
 Комментарий модератора 
Запрещено создавать темы с бессмысленными названиями вроде "Помогите!", "Вопрос" и т.п.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.11.2011, 16:41     Вывести сумму цифр числа
Посмотрите здесь:

C++ Подпрограммы: Из заданного числа отняли сумму его цифр. Из результата опять отняли сумму его цифр и т.д. Через сколько таких действий получится ноль?
Дана строка, изображающая целое положительное число. Вывести сумму цифр этого числа C++
C++ Вывести все 6-ти значные числа, которые делятся без остатка на сумму своих цифр
C++ Используя арифметические операции, определить и вывести сумму цифр трехзначного целого числа k (100<=k<=255)
Вывести сумму цифр числа C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,689
17.11.2011, 16:42     Вывести сумму цифр числа #2
а к чему тут стринг то?
im_Kudrik
0 / 0 / 0
Регистрация: 17.11.2011
Сообщений: 20
17.11.2011, 17:00  [ТС]     Вывести сумму цифр числа #3
такое задание

Добавлено через 12 минут
так что с задачей?
mc.Duck
Заблокирован
17.11.2011, 18:12     Вывести сумму цифр числа #4
im_Kudrik, вот код:
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
25
26
27
28
29
30
31
32
#include <iostream>
#include <string>
#include <clocale>
using namespace std;
 
int main(void)
{
    setlocale(LC_ALL,"Russian");
    char chom[]="";
    string chomp="";
    cout<<"Ââåäèòå ÷èñëî: ";cin>>chom;
    int *mass=new int[strlen(chom)];
    int len=strlen(chom);
    for(int i=0;i<=len-1;i++)
    {
            chomp=chomp+chom[i]+'k';
            }
    int sum=0;
    cout<<endl;
    for(int i=0;i<=strlen(chom)*2-1;i+=2)
    {
            mass[i]=atoi(&chomp[i]);
            cout<<mass[i]<<"  "; 
            sum+=mass[i]; 
            }
            cout<<endl;
            cout<<endl;
            cout<<"ÑóììГ* ГўГ±ГҐГµ Г·ГЁГ±ГҐГ« = "<<sum<<endl;
            cout<<endl;
            cout<<endl;
        system ("pause");
}
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
17.11.2011, 18:17     Вывести сумму цифр числа #5
Цитата Сообщение от mc.Duck Посмотреть сообщение
C++
1
2
    char chom[]="";
    cin>>chom;
Ну вы и весельчак Сами хоть тестировали свою программу?
mc.Duck
Заблокирован
17.11.2011, 18:31     Вывести сумму цифр числа #6
Thinker, да..а что?)))
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
17.11.2011, 18:36     Вывести сумму цифр числа #7
Цитата Сообщение от mc.Duck Посмотреть сообщение
Thinker, да..а что?)))
как вы умудряетесь вводить что-то в пустую строку, вернее, в одноэлементный массив?
im_Kudrik
0 / 0 / 0
Регистрация: 17.11.2011
Сообщений: 20
17.11.2011, 18:40  [ТС]     Вывести сумму цифр числа #8
и в правду ,вывело не то что надо.но все равно спасибо за помощь =)
mc.Duck
Заблокирован
17.11.2011, 18:43     Вывести сумму цифр числа #9
Thinker, вообще-то chom[] тоже самое, что и *сhom .
Это абсолютно одинаковое объявление динамического массива.

Добавлено через 1 минуту
im_Kudrik, да, вохможно я намудрил. Попробуйте так:
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
25
26
27
28
29
30
31
32
#include <iostream>
#include <string>
#include <clocale>
using namespace std;
 
int main(void)
{
    setlocale(LC_ALL,"Russian");
    char chom[99];
    string chomp="";
    cout<<"Ââåäèòå ÷èñëî: ";cin>>chom;
    int *mass=new int[strlen(chom)];
    int len=strlen(chom);
    for(int i=0;i<=len-1;i++)
    {
            chomp=chomp+chom[i]+'k';
            }
    int sum=0;
    cout<<endl;
    for(int i=0;i<=strlen(chom)*2-1;i+=2)
    {
            mass[i]=atoi(&chomp[i]);
            cout<<mass[i]<<"  "; 
            sum+=mass[i]; 
            }
            cout<<endl;
            cout<<endl;
            cout<<"ÑóììГ* ГўГ±ГҐГµ Г·ГЁГ±ГҐГ« = "<<sum<<endl;
            cout<<endl;
            cout<<endl;
        system ("pause");
}
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
17.11.2011, 18:55     Вывести сумму цифр числа #10
Цитата Сообщение от mc.Duck Посмотреть сообщение
Thinker, вообще-то chom[] тоже самое, что и *сhom .
Это абсолютно одинаковое объявление динамического массива.
Что я могу сказать, ужас и только... Одно дело, когда вы функцию так описываете, а другое, когда определяете... Вы путаете массивы и указатели.
Кому то ОЧЕНЬ-ОЧЕНЬ-ОЧЕНЬ нужно книжки почитать.
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,689
17.11.2011, 18:59     Вывести сумму цифр числа #11
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
25
26
#include <iostream>
#include <string>
#include <sstream>
 
int main() {
    std::string str;
    std::cin >> str;
    std::stringstream ss;
    int cnt = 0;
    int temp;
 
    while (++cnt) {
        temp = (str[0] - '0') + (str[1] - '0');
        if (temp > 9) {
            ss << temp;
            ss >> str;
            ss.clear();
        }
        else
            break;
    }
 
    std::cout << temp << " " << cnt;
    std::cout << std::endl;
    return 0;
}
что-то лучше в голову не пришло)
im_Kudrik
0 / 0 / 0
Регистрация: 17.11.2011
Сообщений: 20
17.11.2011, 19:23  [ТС]     Вывести сумму цифр числа #12
хм ,и сново не то!сумму цифр числа я могу вывести ,но задание другое...прочтите именно условие ,а не только заголовок
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,689
17.11.2011, 19:29     Вывести сумму цифр числа #13
ок да?
Миниатюры
Вывести сумму цифр числа  
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
17.11.2011, 19:32     Вывести сумму цифр числа #14
Вариант без string:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int SumDigits(int a)
{
   return a ? a%10 + Sum(a/10) : 0;
}
 
int Sum(int a)
{
    int s = a;
    while (abs(s = SumDigits(s)) >= 10)
       ;
    return s;
}
 
int main()
{
    int a;
    scanf("%d", &a);
    printf("%d\n", Sum(a));
    return 0;
}
im_Kudrik
0 / 0 / 0
Регистрация: 17.11.2011
Сообщений: 20
17.11.2011, 19:34  [ТС]     Вывести сумму цифр числа #15
neske ,спасибо большое ,но что если вводить трехзначное число ?или четырехзначное?и можно объяснить вот это
C++
1
2
3
4
5
6
7
while (++cnt) {
            temp = (str[0] - '0') + (str[1] - '0');
            if (temp > 9) {
            ss << temp;
            ss >> str;
            ss.clear();
        }
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,689
17.11.2011, 19:38     Вывести сумму цифр числа #16
im_Kudrik, ну просто в условии была сказано про двузначное, я так и сделал. если любое, то так -
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
25
26
27
28
#include <iostream>
#include <string>
#include <sstream>
 
int main() {
    std::string str;
    std::cin >> str;
    std::stringstream ss;
    int cnt = 0;
    int temp;
 
    while (++cnt) {
        temp = 0;
        for (int i = 0; i < (int) str.size(); ++i)
            temp += (str[i] - '0');
        if (temp > 9) {
            ss << temp;
            ss >> str;
            ss.clear();
        }
        else
            break;
    }
 
    std::cout << temp << " " << cnt;
    std::cout << std::endl;
    return 0;
}
ss в данном случае это универсальный поток ввода - вывода, мы сначала загружаем в него число temp, а выгружаем уже в строку, тем самым мы конвертировали int в string. А далее, мы его отчищаем, ибо вышеописанная операция может происходить не раз. Ну и собственно пока мы не добрались до брейка, то есть temp > 9, счетчик будет инкрементироваться.
im_Kudrik
0 / 0 / 0
Регистрация: 17.11.2011
Сообщений: 20
17.11.2011, 19:48  [ТС]     Вывести сумму цифр числа #17
можно еще попросить помочь?просто мы тока начали изучать язык с++ ,можно использовать тока #include <string> без #include <sstream> ?
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,689
17.11.2011, 21:03     Вывести сумму цифр числа #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
25
26
27
28
#include <iostream>
#include <string>
 
int main() {
    std::string str;
    std::cin >> str;
    int cnt = 0;
    int temp = 0;
 
    while (++cnt) {
        for (int i = 0; i < (int) str.size(); ++i)
            temp += (str[i] - '0');
        if (temp > 9) {
            str.clear();
            while (temp) {
                char ch = (temp % 10) + '0';
                str = ch + str;
                temp /= 10;
            }
        }
        else
            break;
    }
 
    std::cout << temp << " " << cnt;
    std::cout << std::endl;
    return 0;
}
im_Kudrik
0 / 0 / 0
Регистрация: 17.11.2011
Сообщений: 20
17.11.2011, 21:11  [ТС]     Вывести сумму цифр числа #19
а что значит temp > 9 ?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.11.2011, 21:15     Вывести сумму цифр числа
Еще ссылки по теме:

Вывести на экран сумму цифр данного числа C++
Вывести сумму цифр каждого из делителей числа C++
Посчитать сумму цифр и сумму делителей данного целого числа C++

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

Или воспользуйтесь поиском по форуму:
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,689
17.11.2011, 21:15     Вывести сумму цифр числа #20
ну, ээ, если temp больше девяти, то продолжаем, а иначе выходим из цикла.
Yandex
Объявления
17.11.2011, 21:15     Вывести сумму цифр числа
Ответ Создать тему
Опции темы

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