2 / 2 / 1
Регистрация: 11.11.2010
Сообщений: 58
1

Сложить цифры числа (до тех пор, пока не получится сумма из одной цифры)

19.11.2010, 02:59. Показов 11033. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем Доброго времени суток.

Первая программа заключается в том что с клавиатуры вводится число например 45644, нужно занести его или в масив чисел или в строку, и отуда все елементы сложить между собой, в ответе останется одно число 4+5+6+4+4=9+6+8=15+8=6+8=14=1+4=5.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.11.2010, 02:59
Ответы с готовыми решениями:

Написать программу которая складывает числа до тех пор пока не получится число состоящее из одной цифры
написать программу которая складывает числа до тех пор пока не получится число состоящее из одной...

Суммировать числа до тех пор, пока сумма не превысит 15.
Имеется массив А из N произвольных чисел - А(N), среди которых есть положительные, отрицательные и...

Выписывать числа Фибоначчи до тех пор, пока их сумма не превысит 100
Составить процедуру, которая записывала числа фибоначчи( f0=f1=1, f(n)=f(n-1)+f(n-2)) начиная с...

как оформить в цикле додавание n слагаемых, то есть додавать цифры до тех пор пока я ненажму =. Например 1 +2 +3 +4 + . + n = и тогда выводит резуль
как оформить в цикле додавание n слагаемых, то есть додавать цифры до тех пор пока я ненажму =....

5
Эксперт С++
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
19.11.2010, 03:30 2
Вот так первую можно без массивов решить:

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
33
34
35
36
37
38
#include <iostream>
 
int main()
{
    int num = 0;
    int sum = 11;
 
    std::cout << "Enter number: ";
    
    while (true)
    {
        char c = std::cin.get();
 
        if (c < '0' || c > '9')
            break;
        else
            num += c - '0';
    }
 
    while (sum % 10 != sum && sum != 10)
    {
        sum = 0;
 
        while (num != 0)
        {
            sum += num % 10;
            num /= 10;
        }
    }
 
    if (sum == 10)
        sum = 1;
 
    std::cout << "Sum = " << sum << std::endl;
 
    std::cin.get();
    return 0;
}
0
2 / 2 / 1
Регистрация: 11.11.2010
Сообщений: 58
19.11.2010, 03:37  [ТС] 3
Цитата Сообщение от silent_1991 Посмотреть сообщение
Вот так первую можно без массивов решить:

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
33
34
35
36
37
38
#include <iostream>
 
int main()
{
    int num = 0;
    int sum = 11;
 
    std::cout << "Enter number: ";
    
    while (true)
    {
        char c = std::cin.get();
 
        if (c < '0' || c > '9')
            break;
        else
            num += c - '0';
    }
 
    while (sum % 10 != sum && sum != 10)
    {
        sum = 0;
 
        while (num != 0)
        {
            sum += num % 10;
            num /= 10;
        }
    }
 
    if (sum == 10)
        sum = 1;
 
    std::cout << "Sum = " << sum << std::endl;
 
    std::cin.get();
    return 0;
}
можна пояснение к строкам?
как я понял
std::cout << "Enter number: "; вывод сообшения

while (true) цыкл
{
char c = std::cin.get(); вод числа

if (c < '0' || c > '9') если число не в диапазоне 0-9
break; тогда прервать

а мне нужно водится большое число прога сумирует все элементы числа между собой и оставляет одно число в диапазоне от 0 до 9
0
Эксперт С++
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
19.11.2010, 03:45 4
Чуток поправил:

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
33
34
35
36
37
38
39
40
#include <iostream>
 
int main()
{
    int num = 0;
    int sum = 11;
 
    std::cout << "Enter number: ";
    
    while (true)
    {
        char c = std::cin.get();
 
        if (c < '0' || c > '9')
            break;
        else
            num += c - '0';
    }
 
    while (sum % 10 != sum && sum != 10)
    {
        sum = 0;
 
        while (num != 0)
        {
            sum += num % 10;
            num /= 10;
        }
 
        num = sum;
    }
 
    if (sum == 10)
        sum = 1;
 
    std::cout << "Sum = " << sum << std::endl;
 
    std::cin.get();
    return 0;
}
Добавлено через 4 минуты
Программа это и делает. Фишка в том, что мы исходное число не храним, а начинаем преобразования сразу с суммы его цифр, поскольку в первом цикле происходит посимвольное считывание числа и формирование начальной суммы его цифр. Затем, в цикле, формируем сумму цифр полученного числа, запоминаем полученную сумму. Затем проверяем, что полученная сумма состоит из одной цифры либо равна 10, если это не так то в качестве числа используем эту сумму и опять находим сумму его цифр. Цикл закончится, когда сумма будет состоять из одной цифры.
0
2 / 2 / 1
Регистрация: 11.11.2010
Сообщений: 58
19.11.2010, 04:14  [ТС] 5
Цитата Сообщение от silent_1991 Посмотреть сообщение
Чуток поправил:

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
33
34
35
36
37
38
39
40
#include <iostream>
 
int main()
{
    int num = 0;
    int sum = 11;
 
    std::cout << "Enter number: ";
    
    while (true)
    {
        char c = std::cin.get();
 
        if (c < '0' || c > '9')
            break;
        else
            num += c - '0';
    }
 
    while (sum % 10 != sum && sum != 10)
    {
        sum = 0;
 
        while (num != 0)
        {
            sum += num % 10;
            num /= 10;
        }
 
        num = sum;
    }
 
    if (sum == 10)
        sum = 1;
 
    std::cout << "Sum = " << sum << std::endl;
 
    std::cin.get();
    return 0;
}
Добавлено через 4 минуты
Программа это и делает. Фишка в том, что мы исходное число не храним, а начинаем преобразования сразу с суммы его цифр, поскольку в первом цикле происходит посимвольное считывание числа и формирование начальной суммы его цифр. Затем, в цикле, формируем сумму цифр полученного числа, запоминаем полученную сумму. Затем проверяем, что полученная сумма состоит из одной цифры либо равна 10, если это не так то в качестве числа используем эту сумму и опять находим сумму его цифр. Цикл закончится, когда сумма будет состоять из одной цифры.

в коде ошибок нету, но при запуске проги она грузит проц на 50 процентов, я с ходил покурить она так ничего мне и не вывела

Добавлено через 22 минуты
все я разобрался Огромное Спасибо.
0
Эксперт С++
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
19.11.2010, 04:24 6
Можно куда проще сделать.

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>
 
int main()
{
    int sum = 0;
 
    std::cout << "Enter number: ";
    
    while (true)
    {
        char c = std::cin.get();
 
        if (c < '0' || c > '9')
            break;
        else
        {
            sum += c - '0';
 
            if (sum % 10 != sum)
                sum = sum / 10 + sum % 10;
        }
    }
 
    std::cout << "Sum = " << sum << std::endl;
 
    std::cin.get();
    return 0;
}
0
19.11.2010, 04:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.11.2010, 04:24
Помогаю со студенческими работами здесь

Организовать ввод чисел до тех пор, пока их сумма не превысит введенного числа m
В VBA немного разбираюсь, но после пары дней раздумий ничего не вышло.... Прошу помощи!...

Вводить положительные числа до тех пор, пока сумма их произведений не станет больше 10000
Вводить положительные числа в переменные a и b до тех пор, пока сумма произведений вводимых чисел...

Как сделать, чтобы к значению p прибавлялась 1, до тех пор пока не получится нужный результат?
Господа, подскажите пожалуйста как сделать, чтобы в коде: import hashlib import binascii p...

Вычисление суммы натуральных чисел до тех пор, пока сумма не превысит заданного с клавиатуры числа
Вычисление суммы натуральных чисел до тех пор, пока сумма не превысит заданного с клавиатуры числа


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru