Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/231: Рейтинг темы: голосов - 231, средняя оценка - 4.52
 Аватар для EfimKR
57 / 30 / 13
Регистрация: 24.06.2014
Сообщений: 255
Записей в блоге: 1

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

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

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

Вопрос: Можно ли написать одну функцию для всего или нужно 3 функции?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.08.2014, 00:10
Ответы с готовыми решениями:

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

Рекурсия: определить количество цифр 3 в числе n
Дано некоторое целое число n. Рекурсивно определить количество цифр 3 в нем.

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

12
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
28.08.2014, 00:15
можно ухитриться и в одну запихнуть, можно 3 отдельных - проще, нагляднее, логичнее.
0
 Аватар для EfimKR
57 / 30 / 13
Регистрация: 24.06.2014
Сообщений: 255
Записей в блоге: 1
28.08.2014, 00:20  [ТС]
Всё функции должны быть рекурсивными. Можно примеры?
0
 Аватар для MicM
840 / 498 / 325
Регистрация: 29.12.2009
Сообщений: 1,106
28.08.2014, 00:33
Лучший ответ Сообщение было отмечено 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;
}
2
28.08.2014, 00:36

Не по теме:

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

0
 Аватар для EfimKR
57 / 30 / 13
Регистрация: 24.06.2014
Сообщений: 255
Записей в блоге: 1
28.08.2014, 10:02  [ТС]
Цитата Сообщение от 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
57 / 30 / 13
Регистрация: 24.06.2014
Сообщений: 255
Записей в блоге: 1
28.08.2014, 10:04  [ТС]
0
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
28.08.2014, 10:09
C++
1
2
3
4
    cout<<"\n"<<nNumb;
    cout<<"\nколичество цифр: "<<numb(nNumb);
    cout<<"\nсумма цифр: "<<sum_numb(nNumb);
    cout<<"\nвывод наоборот: "<<revers(nNumb);
0
 Аватар для EfimKR
57 / 30 / 13
Регистрация: 24.06.2014
Сообщений: 255
Записей в блоге: 1
28.08.2014, 10:35  [ТС]
rikimaru2013, таким образом 54321 будет записано сразу за 15.

Добавлено через 27 секунд
И ещё одно, почему программа дописывает 0 в конце числа наоборот?
0
 Аватар для MicM
840 / 498 / 325
Регистрация: 29.12.2009
Сообщений: 1,106
28.08.2014, 10:54
У меня ничего не дописывает
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
57 / 30 / 13
Регистрация: 24.06.2014
Сообщений: 255
Записей в блоге: 1
28.08.2014, 11:20  [ТС]
MicM, это я примерно так-же решил. Меня другое интересовало, почему число перед текстом писало.

С 0 также разобрался, его возвращала функция в main где он выводился. Решил сделав функцию реверса типа void.
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
28.08.2014, 14:49
Цитата Сообщение от 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
365 / 321 / 219
Регистрация: 21.02.2013
Сообщений: 756
28.08.2014, 14:51
а вот три в одном оцените:
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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.08.2014, 14:51
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru