Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.79/43: Рейтинг темы: голосов - 43, средняя оценка - 4.79
EfimKR
55 / 28 / 13
Регистрация: 24.06.2014
Сообщений: 247
Записей в блоге: 1
1

Рекурсия: количество цифр в числе, сумма цифр и реверс числа

28.08.2014, 00:10. Просмотров 8428. Ответов 12
Метки нет (Все метки)

Вот задание:
Написать программу, которая запрашивает у пользователя целое число, на экран выводит сколько цифр в числе,
их сумму и вывод цифр наоборот (пример: 4356 – 4 цифры, сумма: 4+3+5+6=18, вывод наоборот: 6534)
Разработать рекурсивную функцию, которая решает эту задачу!

Вопрос: Можно ли написать одну функцию для всего или нужно 3 функции?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.08.2014, 00:10
Ответы с готовыми решениями:

Количество различных цифр в числе рекурсия
для натурального n вывести количество разных цифр, участвовавших в его ...

Рекурсия: подсчитать количество цифр в заданном натуральном числе
Доброго времени суток. Задание было такое: Тема - Рекурсивные функции...

Рекурсия, подсчитать количество цифр в заданном целом числе
Подсчитать количество цифр в заданном целом числе n

Определить сколько цифр в заданном натуральном числе, и чему равна сумма его цифр
Дано натуральное число n (n<=100). Определить сколько цифр в числе n, чему...

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

12
КОП
526 / 383 / 120
Регистрация: 15.08.2010
Сообщений: 1,076
Завершенные тесты: 1
28.08.2014, 00:15 2
можно ухитриться и в одну запихнуть, можно 3 отдельных - проще, нагляднее, логичнее.
0
EfimKR
55 / 28 / 13
Регистрация: 24.06.2014
Сообщений: 247
Записей в блоге: 1
28.08.2014, 00:20  [ТС] 3
Всё функции должны быть рекурсивными. Можно примеры?
0
MicM
824 / 483 / 324
Регистрация: 29.12.2009
Сообщений: 1,106
Завершенные тесты: 1
28.08.2014, 00:33 4
Лучший ответ Сообщение было отмечено EfimKR как решение

Решение

Цитата Сообщение от EfimKR Посмотреть сообщение
вывод цифр наоборот
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
using namespace std;
 
void func (int n)
{
    cout <<n%10;
    if (n/10!=0)
        func (n/10);
}
 
int main()
{
    int n;
    cout <<"N = ";
    cin >> n;
    func (n);
}
Добавлено через 8 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//возвращает кол-во цифр в числе
int count (int n)
{
    if (n/10!=0)
        return 1+count(n/10);
    else
        return 1;
}
 
//возвращает сумму цифр числа
int sum (int n)
{
    if (n/10!=0)
        return n%10+sum(n/10);
    else
        return n%10;
}
1
КОП
28.08.2014, 00:36
  #5

Не по теме:

MicM, эх, не дали вы человеку самому понять рекурсию...

0
EfimKR
55 / 28 / 13
Регистрация: 24.06.2014
Сообщений: 247
Записей в блоге: 1
28.08.2014, 10:02  [ТС] 6
Цитата Сообщение от MicM Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
//возвращает сумму цифр числа
int sum (int n)
{
   if (n/10!=0)
     return n%10+sum(n/10);
   else
     return n%10;
}
Эта функция не работает.

Добавлено через 7 минут
Ошибся, работает, проблема в другом.

Добавлено через 3 минуты
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
41
42
43
44
45
46
47
/* Написать программу, которая запрашивает у пользователя целое число, на экран выводит сколько цифр в числе, 
их сумму и вывод цифр наоборот (пример: 4356 – 4 цифры, сумма: 4+3+5+6=18, вывод наоборот: 6534) 
Разработать рекурсивную функцию, которая решает эту задачу! */
 
#include<iostream>
using namespace std;
 
int numb(int);
int sum_numb(int);
int revers(int);
 
 
int main()
{
    setlocale(0, "");
    int nNumb;
    
    cout<<"Введите целое число\n";
    cin>>nNumb;
 
    
    cout<<"\n"<<nNumb<<"\n";
    cout<<"количество цифр: "<<numb(nNumb);
    cout<<"\nсумма цифр: "<<sum_numb(nNumb)<<endl;
    cout<<"вывод наоборот: "<<revers(nNumb);
    
    cout<<"\n";
    return 0;
}
 
int numb(int n)
{
    if (0 != n/10) return numb(n/10)+1;
    else return 1;
}
int sum_numb(int n)
{
    if (n/10!=0)
        return n%10+sum_numb(n/10);
    else  return n%10;
}
 
int revers(int n)
{
    cout<<n%10;
    if (0 != n/10) return revers(n/10);
}
Почему вывод наоборот выводит число перед текстом?
0
EfimKR
55 / 28 / 13
Регистрация: 24.06.2014
Сообщений: 247
Записей в блоге: 1
28.08.2014, 10:04  [ТС] 7
Рекурсия: количество цифр в числе, сумма цифр и реверс числа
0
rikimaru2013
C++ Game Dev
2472 / 1141 / 348
Регистрация: 30.11.2013
Сообщений: 3,709
28.08.2014, 10:09 8
C++
1
2
3
4
    cout<<"\n"<<nNumb;
    cout<<"\nколичество цифр: "<<numb(nNumb);
    cout<<"\nсумма цифр: "<<sum_numb(nNumb);
    cout<<"\nвывод наоборот: "<<revers(nNumb);
0
EfimKR
55 / 28 / 13
Регистрация: 24.06.2014
Сообщений: 247
Записей в блоге: 1
28.08.2014, 10:35  [ТС] 9
rikimaru2013, таким образом 54321 будет записано сразу за 15.

Добавлено через 27 секунд
И ещё одно, почему программа дописывает 0 в конце числа наоборот?
0
MicM
824 / 483 / 324
Регистрация: 29.12.2009
Сообщений: 1,106
Завершенные тесты: 1
28.08.2014, 10:54 10
У меня ничего не дописывает
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
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
 
void func (int n)
{
    cout <<n%10;
    if (n/10!=0)
        func (n/10);
}
 
int count (int n)
{
    if (n/10!=0)
        return 1+count(n/10);
    else
        return 1;
}
 
int sum (int n)
{
    if (n/10!=0)
        return n%10+sum(n/10);
    else
        return n%10;
}
 
int main()
{
    int n;
    cout <<"N = ";
    cin >> n;
    cout <<count(n) <<endl
         <<"Sum: " <<sum(n) <<endl;
    func (n);
}
1
Миниатюры
Рекурсия: количество цифр в числе, сумма цифр и реверс числа  
EfimKR
55 / 28 / 13
Регистрация: 24.06.2014
Сообщений: 247
Записей в блоге: 1
28.08.2014, 11:20  [ТС] 11
MicM, это я примерно так-же решил. Меня другое интересовало, почему число перед текстом писало.

С 0 также разобрался, его возвращала функция в main где он выводился. Решил сделав функцию реверса типа void.
0
-=ЮрА=-
Заблокирован
Автор FAQ
28.08.2014, 14:49 12
Цитата Сообщение от EfimKR Посмотреть сообщение
Вот задание:
Написать программу, которая запрашивает у пользователя целое число, на экран выводит сколько цифр в числе,
их сумму и вывод цифр наоборот (пример: 4356 – 4 цифры, сумма: 4+3+5+6=18, вывод наоборот: 6534)
Разработать рекурсивную функцию, которая решает эту задачу!
Вопрос: Можно ли написать одну функцию для всего или нужно 3 функции?
- ну можно
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
#include <iostream>
using namespace std;
 
int recsplit(int num, int &sum, int &back);
 
int main(){
    int n = 0;
    int num = 4567;
    int sum = 0;
    n = recsplit(num, sum, num);
    cout<<"  n = "<<n<<endl;
    cout<<"sum = "<<sum<<endl;
    cout<<"num = "<<num<<endl;
    return 0;
}
 
int recsplit(int num, int &sum, int &back){
    int n = 1;
    if( back == num )
        back = 0;
    else
        back *= 10;
    if( num % 10 )
    {
        back += (num % 10);
        sum  += (num % 10);
    }
    else
        sum  *= 10;
    if( num /= 10 )
        n += recsplit(num, sum, back);
    return n;
}
n = 4
sum = 22
num = 7654
http://codepad.org/lig1H2pP
2
jurok_85
274 / 257 / 190
Регистрация: 21.02.2013
Сообщений: 614
Завершенные тесты: 1
28.08.2014, 14:51 13
а вот три в одном оцените:
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;
 
 
void rev_num(int num)
{
    cout << num % 10 << " ";
    static int sum = 0, counter = 0;
    counter++;
    sum += num % 10;
    if(num/10)
    rev_num(num/10);
    else
    cout <<"\n Kol-vo cifr: "<< counter
    << "\n Summa cifr: " << sum;
}
int main()
{
   int number = 123456;
 
   rev_num(number);
    return 0;
}
1
28.08.2014, 14:51
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.08.2014, 14:51

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

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

Дано натурально число n. Сколько цифр в этом числе. Чему равняется сумма цифр. Найти первую цифру
Желательно в С


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

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

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