0 / 0 / 0
Регистрация: 23.03.2020
Сообщений: 90
1

Свертка числа суммированием цифр

10.07.2020, 13:33. Показов 2589. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Если мы сложим все цифры какого-либо числа, затем все цифры найденной суммы и будем повторять много раз, мы, наконец, получим однозначное число (цифру), называемое цифровым корнем данного числа. Например, цифровой корень числа 34697 равен 2 (3+4+6+9+7=29; 2+9=11; 1 + 1=2).
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.07.2020, 13:33
Ответы с готовыми решениями:

дано натуральное число N. Определить,во сколько раз произведение цифр числа больше суммы цифр.Найти количество чётных цифр в записи числа!!
дано натуральное число N. Определить,во сколько раз произведение цифр числа больше суммы цифр.Найти...

Найти и вывести все числа в интервале от 1 до N-1, где сумма всех цифр совпадает с суммой цифр данного числа
Дано натуральное число N.Написать функцию,которая находит и выводит все числа в интервале от 1 до...

Проверить условие: сумма цифр заданного числа N превосходит произведение цифр этого же числа на 1
Составит линейную логическую программу, печатающую значение 1, если указанное высказывание...

Дано натуральное число N. Найти и вывести все числа в интервале от 1 до N-1, у которых произведение цифр совпадает с произведением цифр данного числа
Помогите, пожалуйста!!! А то у меня не получается( Написал программу, когда ввожу число 32 как в...

16
2832 / 2335 / 707
Регистрация: 29.06.2020
Сообщений: 8,655
10.07.2020, 15:03 2
может не самый элегантный способ , но зато понятный

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int digitalRoot(int value)
{
    int digital_root=0;
    value = abs(value); // модуль числа -  |value| , модуль #include <math.h>
    while(value>9)
        {
            digital_root += value % 10;
            value = value / 10;
        }
    digital_root += value;
    if (digital_root>9)
        digital_root = digitalRoot(digital_root); // если цифровой корень больше 9 ,  рекурсивно ищем след
    return digital_root;
}
0
Эксперт CЭксперт С++
5113 / 4552 / 854
Регистрация: 07.10.2015
Сообщений: 9,462
10.07.2020, 15:15 3
Klumir, я бы сделал так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
unsigned int digitalRoot(unsigned int value)
{
    do
    {
        int sum = 0;
        while (value)
        {
            sum += value % 10;
            value = value / 10;
        }
        value = sum;
    } while (value > 9);
    return value;
}
0
2528 / 1247 / 460
Регистрация: 08.11.2016
Сообщений: 3,428
10.07.2020, 18:03 4
C++
1
2
3
4
5
6
int gh(int ret)
{
    while(ret > 9)
        ret = ret / 10 + ret % 10;
    return ret;
}
3
Диссидент
Эксперт C
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
11.07.2020, 11:11 5
Annemesski, красиво!
0
0 / 0 / 0
Регистрация: 23.03.2020
Сообщений: 90
13.07.2020, 14:36  [ТС] 6
liv,
Команда не работает ошибки:
Ошибка 1 error LNK2019: ссылка на неразрешенный внешний символ _main в функции ___tmainCRTStartup
Ошибка 2 error LNK1120: неразрешенных внешних элементов: 1
Помогите разобраться!
0
Эксперт CЭксперт С++
5113 / 4552 / 854
Регистрация: 07.10.2015
Сообщений: 9,462
13.07.2020, 14:40 7
Klumir, функция main() написана?
Приведена только функция, решающая задача, но ее же надо вызвать...
0
0 / 0 / 0
Регистрация: 23.03.2020
Сообщений: 90
13.07.2020, 15:12  [ТС] 8
liv,
Я пробовал добавлять, но не получается.
0
Эксперт CЭксперт С++
5113 / 4552 / 854
Регистрация: 07.10.2015
Сообщений: 9,462
13.07.2020, 15:16 9
Klumir, напиши весь код, который получился
0
0 / 0 / 0
Регистрация: 23.03.2020
Сообщений: 90
13.07.2020, 15:25  [ТС] 10
liv,
Я добавил так, скорее всего не правильно но просто, я до этого не сталкивался с командой "unsigned int digitalRoot(unsigned int value)"

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
using namespace std;
 
int main()
unsigned int digitalRoot(unsigned int value)
{
    do
    {
        int sum = 0;
        while (value)
        {
            sum += value % 10;
            value = value / 10;
        }
        value = sum;
    } while (value > 9);
    return value;
}
0
Эксперт CЭксперт С++
5113 / 4552 / 854
Регистрация: 07.10.2015
Сообщений: 9,462
13.07.2020, 15:37 11
Klumir, во-первых, теги надо использовать С++
Во-вторых, код надо писать примерно так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
using namespace std;
 
unsigned int digitalRoot(unsigned int value)
{
    do
    {
        int sum = 0;
        while (value)
        {
            sum += value % 10;
            value = value / 10;
        }
        value = sum;
    } while (value > 9);
    return value;
}
 
int main()
{
  int a = digitalRoot(34697);
  cout << "a = " << a << endl;
}
Добавлено через 2 минуты
Почему не взят код Annemesski?
Красивый, короткий код, решающий ту же задачу...
0
0 / 0 / 0
Регистрация: 23.03.2020
Сообщений: 90
13.07.2020, 15:54  [ТС] 12
liv,
Благодарю!
Ваш выбрал, потому что на прошлое мое задание вы написали хороший код.
А можно ли обойтись без digitalRoot, а корень числа ввести прямо в консоле?
0
Эксперт CЭксперт С++
5113 / 4552 / 854
Регистрация: 07.10.2015
Сообщений: 9,462
13.07.2020, 16:02 13
Лучший ответ Сообщение было отмечено Klumir как решение

Решение

Цитата Сообщение от Klumir Посмотреть сообщение
А можно ли обойтись без digitalRoot, а корень числа ввести прямо в консоле?
Т.е. обойтись без подпрограммы, а посчитать прямо в main()? Да все можно. Число вводим?

Добавлено через 3 минуты
Klumir, типа так?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
using namespace std;
 
int main()
{
    unsigned int value;
    cout << "value = ";
    cin >> value;
 
    do
    {
        int sum = 0;
        while (value)
        {
            sum += value % 10;
            value = value / 10;
        }
        value = sum;
    } while (value > 9);
 
    cout << "root = " << value << endl;
}
0
0 / 0 / 0
Регистрация: 23.03.2020
Сообщений: 90
13.07.2020, 16:06  [ТС] 14
liv,
Да
Огромное спасибо!
0
823 / 626 / 321
Регистрация: 24.02.2017
Сообщений: 2,209
13.07.2020, 19:15 15
Лучший ответ Сообщение было отмечено Annemesski как решение

Решение

C++
1
2
3
    int n;
    cin>>n;
    n==0 ? cout<<0 : n%9==0  ? cout<<9 : cout<<n%9;
3
Эксперт CЭксперт С++
5113 / 4552 / 854
Регистрация: 07.10.2015
Сообщений: 9,462
14.07.2020, 13:11 16
повар1, шикарно! Так и есть, все сводится к остатку от деления на 9, с поправкой на 0...
0
2528 / 1247 / 460
Регистрация: 08.11.2016
Сообщений: 3,428
14.07.2020, 14:41 17
liv, как-то мне встречался ролик о свойствах девятки, там довольно неожиданные закономерности наблюдаются, по ходу справедливые для числа равного S - 1, где S основание СС.
1
14.07.2020, 14:41
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.07.2020, 14:41
Помогаю со студенческими работами здесь

От данного числа N вычтем сумму цифр этого числа, от полученного числа опять вычтем сумму цифр и т.д. до тех пор, пока число положительно
И опять: сколько можно? Задано натуральное число N. От данного числа вычтем сумму цифр этого...

Сравнение 1 и 2 цифр числа и проверка числа на наличие одинаковых цифр
нужно создать заголовочный файл, в котором будет функция сравнивающая первую и вторую цифру числа,...

Найдите такие натуральные числа, чтобы сумма их цифр, а также сумма цифр следующего за ним числа делилась на 7
Помогите пожалуйста с задачей. Найдите натуральные числа такие, чтобы сумма их цифр следующего за...

Линейная свертка методом перекрытия с суммированием и накопления
Здравствуйте! Интересует как производится линейная свертка последовательностей s3(n) и h3(n),...

Сумма цифр каждого из которых равна корню n-й степени из этого числа, где n - количество цифр числа
На заданном числовом промежутке требуется найти все числа, сумма цифр каждого из которых равна...

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


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

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

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