Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
kutuzzik
0 / 0 / 0
Регистрация: 19.12.2011
Сообщений: 18
#1

Написать рекурсную функцию, которая общитает сумму введеных чисел. - C++

01.01.2012, 17:37. Просмотров 1090. Ответов 20
Метки нет (Все метки)

С++. Ввести любое натурпльное число, написать рекурсную функцию, которая общитает сумму введеных чисел.

Пасиба большое
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.01.2012, 17:37
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Написать рекурсную функцию, которая общитает сумму введеных чисел. (C++):

Написать функцию, которая возвращает сумму чисел в заданном диапазоне - C++
Кто знает как решить задачу на С++, при помощи рекурсии? Написать функцию, которая возвращает сумму чисел в заданном диапазоне. ...

Написать функцию, которая рекурсивно вычисляет сумму чисел в заданном диапазоне - C++
Написать функцию, которая рекурсивно вычисляет сумму чисел в заданном диапазоне Код: long int Fact(long int N) { // если...

Написать функцию, которая рекурсивно вычисляет сумму чисел в заданном диапазоне - C++
Написать функцию, которая рекурсивно вычисляет сумму чисел в заданном диапазоне.

Написать функцию, которая определяет сумму положительных элементов массива целых чисел - C++
Помогите написать программу) 1)Написать функцию, которая определяет сумму положительных элементов массива целых чисел. Параметрами...

Написать функцию, которая возвращает сумму n чисел Фибоначчи. Число n принимается в качестве аргумента - C++
Кто знает, как решается задача на С++: написать функцию, которая возвращает сумму n чисел Фибоначчи. Число n принимается в качестве...

Подсчитать кол-во введеных чисел, сумму положительных и сумму отрицат - C++
а тaкже oпрeделить мaксимальное и минимaльное ввeденное числo. Подтолкните на мысль коим образом выполнить сию миссию.Спасибо

20
Mиxaил
533 / 438 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
01.01.2012, 17:52 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
 
template < typename T >
T result( T *a, unsigned int n )
{
    if ( !n )
        return a[ n ];
    return a[ n ] + result( a, n - 1 );
}
 
int main()
{
    int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
    std::cout << "Result: " << result( arr, sizeof( arr ) / sizeof( *arr ) - 1 ) << std::endl;
    return 0;    
}
1
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
01.01.2012, 17:56 #3
Цитата Сообщение от kutuzzik Посмотреть сообщение
Ввести любое натурпльное число,
Цитата Сообщение от kutuzzik Посмотреть сообщение
которая общитает сумму введеных чисел.
Так вводим число или числа. Конкретней...
1
kutuzzik
0 / 0 / 0
Регистрация: 19.12.2011
Сообщений: 18
01.01.2012, 17:59  [ТС] #4
Например: 293098
0
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
01.01.2012, 18:01 #5
Цитата Сообщение от kutuzzik Посмотреть сообщение
Например: 293098
Попробую угадать: найти сумму цифр?
1
kutuzzik
0 / 0 / 0
Регистрация: 19.12.2011
Сообщений: 18
01.01.2012, 18:02  [ТС] #6
Так точно
0
xAtom
915 / 740 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
01.01.2012, 18:18 #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
 
int dsum(int n) {
  int r = n % 10;
  return (n > 0) ? r + dsum(n / 10) : r;
}
 
int main(void)
{
    std::cout << dsum(293098) << std::endl;
    return 0;
}
1
Mиxaил
533 / 438 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
01.01.2012, 18:20 #8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
 
unsigned int result( int n )
{
    if ( !n )
        return n;
    return n % 10 + result( n / 10 );
}
 
int main()
{
    int number = -123456;
    std::cout << "Result: " << result( ( number > 0 ) ? number : -number ) << std::endl;
    return 0;    
}
1
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
01.01.2012, 19:11 #9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <cmath>
 
size_t digit_sum (long val)
{
    return abs(val) > 9 ? abs(val) % 10 + digit_sum (val / 10) : abs(val) ;
}
 
int main ()
{
   int a = -123;
   std::cout << " Summa digit " << a << " = " << digit_sum (a) << std::endl;
}
http://liveworkspace.org/code/e07e3f3e9f3ae7a98d4a609027685c0f
0
easybudda
Модератор
Эксперт CЭксперт С++
9693 / 5643 / 962
Регистрация: 25.07.2009
Сообщений: 10,847
01.01.2012, 20:35 #10
Цитата Сообщение от go Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <cmath>
 
size_t digit_sum (long val)
{
    return abs(val) > 9 ? abs(val) % 10 + digit_sum (val / 10) : abs(val) ;
}
 
int main ()
{
   int a = -123;
   std::cout << " Summa digit " << a << " = " << digit_sum (a) << std::endl;
}
http://liveworkspace.org/code/e07e3f3e9f3ae7a98d4a609027685c0f
Я бы наоборот сделал:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
#include <stdlib.h>
 
size_t digsum(int n){
    return ( n > 9 ) ? n % 10 + digsum(n / 10) : n % 10;
}
 
int main(void){
    int n;
 
    while ( printf("Number: ") && scanf("%d", &n) == 1 )
        printf("Sum of digits: %d\n", digsum(abs(n)));
 
    return 0;
}
0
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
01.01.2012, 20:41 #11
Цитата Сообщение от easybudda Посмотреть сообщение
Я бы наоборот сделал:
Что принципиально поменялось?
0
easybudda
Модератор
Эксперт CЭксперт С++
9693 / 5643 / 962
Регистрация: 25.07.2009
Сообщений: 10,847
02.01.2012, 02:07 #12
Цитата Сообщение от go Посмотреть сообщение
Что принципиально поменялось?
В рекурсивной функции по определению чем меньше возни, тем лучше. И незачем абсолютно каждый раз из неё abs() вызывать (будь оно макросом, или функцией - не важно), если можно это один раз при передаче аргумента в функцию сделать. Кстати, и сама функция чуть проще:
C
1
size_t digsum(int n) { return ( n > 9 ) ? n % 10 + digsum(n / 10) : n; }
0
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
02.01.2012, 12:02 #13
Цитата Сообщение от easybudda Посмотреть сообщение
В рекурсивной функции по определению чем меньше возни, тем лучше.
Цитата Сообщение от easybudda Посмотреть сообщение
return ( n > 9 ) ? n % 10 + digsum(n / 10) : n % 10;
Встречный вопрос: для чего эта "вазня"?
0
easybudda
Модератор
Эксперт CЭксперт С++
9693 / 5643 / 962
Регистрация: 25.07.2009
Сообщений: 10,847
02.01.2012, 12:41 #14
Цитата Сообщение от go Посмотреть сообщение
Встречный вопрос: для чего эта "вазня"?
так выше же исправился...
0
silent_1991
Эксперт С++
4986 / 3043 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
02.01.2012, 13:06 #15
easybudda, а я бы так:
C
1
2
3
4
size_t digsum(int n)
{
    return n < 0 ? digsum(-n) : ( n > 9 ) ? n % 10 + digsum(n / 10) : n;
}
На одну проверку на каждом вызове больше, но всё же более лояльно, чем по 3 дополнительных вызова.
1
02.01.2012, 13:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.01.2012, 13:06
Привет! Вот еще темы с ответами:

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

Написать программу, которая будет склеивать два введеных строки - C++
Написать программу, которая будет склеивать два введеных строки

Написать функцию, которая возвращает минимальное из двух чисел, которые переданы в функцию в качестве параметров - C++
Написать функцию, которая возвращает минимальное из двух чисел, которые переданы в функцию в качестве параметров.

Написать функцию, которая возвращает максимальное из двух чисел, которые переданы в функцию в качестве параметров - C++
Написать функцию, которая возвращает максимальное из двух чисел, которые переданы в функцию в качестве параметров.


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

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

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