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

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

Войти
Регистрация
Восстановить пароль
 
ozzy_b
2 / 2 / 0
Регистрация: 02.10.2012
Сообщений: 169
#1

Сумма цифр натурального числа - C++

16.10.2012, 20:16. Просмотров 883. Ответов 8
Метки нет (Все метки)

люди, обясните мне пожалуста как работает ета функция
C++
1
2
3
{
    return n ? n % 10 + suma(n / 10) : 0;
}
, полностью опишите как ето работает, и если есть более "нубский" вариант етой функции то напишите, а то ета функция работает но как я не знаю. мне надо здать лабараторку, и препод сразу поймет что ето не моя функция.
вот весь код, если что
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include<conio.h>
#include<stdio.h>
int suma(int n)
{
    return n ? n % 10 + suma(n / 10) : 0;
}
int main()
{
printf("Vvedite chislo n");
int n, s;
scanf("%d", &n);
s=suma(n);
printf("s=%d", s);
getch();
return 0;
}
Добавлено через 54 секунды
програма должна быть сделана через рекурсию.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.10.2012, 20:16     Сумма цифр натурального числа
Посмотрите здесь:

Сумма цифр натурального числа - C++
Нужна помощь по следующей задаче: {Дано натуральное число. Найдите сумму цифр данного числа. Написать рекурсивную функцию} Смотрел в...

Сумма цифр натурального числа - C++
Рассмотрим произвольное натуральное число и найдём сумму его цифр,затем сумму цифр полученного числа и так далее, пока не получиться...

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

Сумма каких-либо двух цифр заданного трехзначного натурального числа N равна третьей цифре. - C++
Помогите решить задачу. Сумма каких-либо двух цифр заданного трехзначного натурального числа N равна третьей цифре. Заранее спасибо.

Определить, в какой из систем счисления сумма всех цифр натурального числа имеет наибольшее значение - C++
C++ Определить, в какой из систем счисления сумма всех цифр натурального числа имеет наибольшее значение. Основания систем счисления:...

Определить функцию для расчета суммы цифр натурального числа. Входной параметр – число. Возвращаемое значение – сумма. - C++
Помогите пожалуйста написать программу на с++ очень нужно Определить функцию для расчета суммы цифр натурального числа. Входной параметр...

Определить функцию для расчета суммы цифр натурального числа. Входной параметр – число. Возвращаемое значение – сумма - C++
Помогите написать пожалуйста программу на C++ Oпределить функцию для расчета суммы цифр натурального числа. Входной параметр – число....

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
12979 / 7291 / 812
Регистрация: 27.09.2012
Сообщений: 18,007
Записей в блоге: 3
Завершенные тесты: 1
16.10.2012, 20:20     Сумма цифр натурального числа #2
Аналог, только без сокращенной записи условия
C++
1
2
3
4
5
6
7
int suma(int n)
{
    if(n!=0)
        return (n%10+suma(n/10));
    else
        return 0;
}
ozzy_b
2 / 2 / 0
Регистрация: 02.10.2012
Сообщений: 169
16.10.2012, 20:25  [ТС]     Сумма цифр натурального числа #3
о, большое спасибо, теперь все понятно стало)

Добавлено через 2 минуты
а теперь, ну очень нубский вопрос: здесь есть рекурсия??? или ето простая функуция, если рекурсия то как она вызывает сама себя в даной задаче?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include<conio.h>
#include<stdio.h>
int suma(int n)
{
    if(n!=0)
        return (n%10+suma(n/10));
    else
        return 0;
}
int main()
{
printf("Vvedite chislo n");
int n, s;
scanf("%d", &n);
s=suma(n);
printf("s=%d", s);
getch();
return 0;
}
Croessmah
Модератор
Эксперт CЭксперт С++
12979 / 7291 / 812
Регистрация: 27.09.2012
Сообщений: 18,007
Записей в блоге: 3
Завершенные тесты: 1
16.10.2012, 20:30     Сумма цифр натурального числа #4
Рекурсия есть =)
C++
1
2
3
4
5
6
7
int suma(int n)
{
    if(n!=0)
        return (n%10+suma(n/10));//Функция вызывает "сама себя" с аргументов в n/10
    else
        return 0;
}
ozzy_b
2 / 2 / 0
Регистрация: 02.10.2012
Сообщений: 169
16.10.2012, 20:41  [ТС]     Сумма цифр натурального числа #5
блин, всеравно не понял((

Добавлено через 3 минуты
уже не надо, сам все понял=)

Добавлено через 6 минут
а нет(( для двоцифрового числа понял, а как тогда для 3, 4, 5... числа считает(оно считает но я непойму как)?
Croessmah
Модератор
Эксперт CЭксперт С++
12979 / 7291 / 812
Регистрация: 27.09.2012
Сообщений: 18,007
Записей в блоге: 3
Завершенные тесты: 1
16.10.2012, 20:51     Сумма цифр натурального числа #6
C++
1
2
3
4
5
6
7
8
int suma(int n)
{
    printf ("\tVyzvana funkciya SUMA s argumentom n = %d\n",n);
    if(n!=0)
        return (n%10+suma(n/10));
    else
        return 0;
}
ozzy_b
2 / 2 / 0
Регистрация: 02.10.2012
Сообщений: 169
16.10.2012, 20:54  [ТС]     Сумма цифр натурального числа #7
меня интересует вот ето именно
C++
1
return (x%10+suma(x/10));
если можно то обясните пошагово на примере, ну пускай числа 1435
Croessmah
Модератор
Эксперт CЭксперт С++
12979 / 7291 / 812
Регистрация: 27.09.2012
Сообщений: 18,007
Записей в блоге: 3
Завершенные тесты: 1
16.10.2012, 21:37     Сумма цифр натурального числа #8
Сообщение было отмечено автором темы, экспертом или модератором как ответ
0.0 Из main вызываем suma с аргументом 1435

1.1 x=1435
1.2 сравнение x с 0.
1.2.0 Если x=0, тогда возвращаем 0 вызывающей функции и выходим из функции.
1.2.1 Если x!=0, тогда
1.2.3 остаток от деления x%10 = 5 //Запомни, 5!
1.2.4 вызываем функцию suma с аргументом x/10 = 143 и ждем ее завершения (тут переход на пункт 2.1)
1.2.5 складываем 5 и то, что вернет функция suma(143)

2.1 Начинает работать функция с x=143
2.2 сравнение x с 0.
2.2.0 Если x=0, тогда возвращаем 0 вызывающей функции и выходим из функции.
2.2.1 Если x!=0, тогда
2.2.3 остаток от деления x%10 = 3 //Запомни, 3!
2.2.4 вызываем функцию suma с аргументом x/10 = 14 и ждем ее завершения (тут переход на пункт 3.1)
2.2.5 складываем 3 и то, что вернет функция suma(14)

3.1 Начинает работать функция с x=14
3.2 сравнение x с 0.
3.2.0 Если x=0, тогда возвращаем 0 вызывающей функции и выходим из функции.
3.2.1 Если x!=0, тогда
3.2.3 остаток от деления x%10 = 4 //Запомни, 4!
3.2.4 вызываем функцию suma с аргументом x/10 = 1 и ждем ее завершения (тут переход на пункт 4.1)
3.2.5 складываем 4 и то, что вернет функция suma(1)

4.1 Начинает работать функция с x=1
4.2 сравнение x с 0.
4.2.0 Если x=0, тогда возвращаем 0 вызывающей функции и выходим из функции.
4.2.1 Если x!=0, тогда
4.2.3 остаток от деления x%10 = 1 //Запомни, 1!
4.2.4 вызываем функцию suma с аргументом x/10 = 0 и ждем ее завершения (тут переход на пункт 5.1)
4.2.5 складываем 1 и то, что вернет функция suma(0)

5.1 Начинает работать функция с x=0
5.2 сравнение x с 0.
5.2.0 Если x=0, тогда возвращаем 0 вызывающей функции и выходим из функции.//Сейчас x равен 0

Теперь все функции начнут поочередно заканчиваться.
Функция №5 вернет 0 в функцию №4
Функция №4 вернет 1 в функцию №3 (пункт 4.2.5 1+0=1)
Функция №3 вернет 5 в функцию №2 (пункт 3.2.5 4+1=5)
Функция №2 вернет 8 в функцию №1 (пункт 2.2.5 3+5=8)
Функция №1 вернет 13 в функцию main (пункт 2.2.5 5+8=13)

13 и будет суммой цифр.
Бррррррррр, рекурсию в линейку расписал..жесть =)))
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.10.2012, 21:45     Сумма цифр натурального числа
Еще ссылки по теме:

Составить программу,которая для любого натурального числа печатает количество цифр в записи этого числа - C++
Помагите решить такую штукенцию=) Составить программу,которая для любого натурального числа печатает количество цифр в записи этого...

Сумма цифер натурального числа - C++
Дано натуральное число. Нужно проверить парна ли сумма его цифер. заранее спасибки)

сумма цыфр натурального числа - C++
Для заданого натурального числа найти сумму цифр числа и найти число, в котором цифры расположены в обратном порядке

Сумма делителей данного натурального числа - C++
Задание: Написать подпрограмму, которая вычисляет сумму делителей данного натурального числа Добавлено через 1 час 26 минут 24...

Сумма цифп произвольного натурального числа - C++
Рассмотрим произвольное натуральное число и найдем сумму его цифр, затем сумму цифр полученного числа и так далее, пока не получим...


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

Или воспользуйтесь поиском по форуму:
ozzy_b
2 / 2 / 0
Регистрация: 02.10.2012
Сообщений: 169
16.10.2012, 21:45  [ТС]     Сумма цифр натурального числа #9
Croessmah, большое спасибо, очень большое спасибо, тепер я наконец понял как работает ета функция. еще раз большое спасибо!!!
Yandex
Объявления
16.10.2012, 21:45     Сумма цифр натурального числа
Ответ Создать тему
Опции темы

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