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

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

Войти
Регистрация
Восстановить пароль
 
Troo
1 / 1 / 0
Регистрация: 09.10.2013
Сообщений: 73
#1

Количество различных цифр в числе рекурсия - C++

10.01.2014, 18:19. Просмотров 442. Ответов 5
Метки нет (Все метки)

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

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

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
 
using namespace std;
 
int Colichestvo (int n);
 
int main()
{
    int n;
    cin>>n;
 
    return 0;
}
int Colichestvo (int n)
{
    int p=0;
    for (int i=0; i<n; i++)
        if( mas[i])
        p++;
    return p;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.01.2014, 18:19     Количество различных цифр в числе рекурсия
Посмотрите здесь:

C++ Определить количество различных цифр в натуральном числе
Количество различных цифр в числе C++
C++ Определить количество цифр в числе N
количество различных цифр в заданном числе. C++
C++ Считать количество цифр в числе
C++ Подсчитать количество цифр 5 в числе
Узнать количество цифр в числе C++
Количество цифр в вещественном (!) числе C++
Количество цифр в числе C++
Количество различных цифр в числе C++
C++ Рекурсия, подсчитать количество цифр в заданном целом числе
Рекурсия: подсчитать количество цифр в заданном натуральном числе C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
10.01.2014, 18:46     Количество различных цифр в числе рекурсия #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//Работает для натуральных чисел
#include <iostream>
 
int Count(int n, int b = 0)
{
    if(!n)
        return 0;
    if((1<<(n%10)) & b)
        return Count(n/10, b);
    
    b |= 1<<(n%10);
    return Count(n/10, b)+1;
}
 
int main()
{
    int n = 123456;
    std::cout << Count(n) << std::endl;
}
Troo
1 / 1 / 0
Регистрация: 09.10.2013
Сообщений: 73
10.01.2014, 19:54  [ТС]     Количество различных цифр в числе рекурсия #3
Dani, а если число с клавиатуры вводить?
S_el
2065 / 1572 / 301
Регистрация: 15.12.2013
Сообщений: 6,206
10.01.2014, 20:01     Количество различных цифр в числе рекурсия #4
Цитата Сообщение от Troo Посмотреть сообщение
а если число с клавиатуры вводить?
C++
1
2
int n
cin>>n
outoftime
║XLR8║
 Аватар для outoftime
505 / 427 / 33
Регистрация: 25.07.2009
Сообщений: 2,297
10.01.2014, 20:08     Количество различных цифр в числе рекурсия #5
Troo, пара слово по поводу кода Dani, он использует битмаску для хранения цифр которые уже встречались, т.к. int имеет 32 бити для 10 цифр этого более чем достаточно.
Troo
1 / 1 / 0
Регистрация: 09.10.2013
Сообщений: 73
10.01.2014, 20:19  [ТС]     Количество различных цифр в числе рекурсия #6
S_el, это то я написала,
у меня ошибку в выводе выдает

Добавлено через 3 минуты
у меня функция стоит после главной

я добавила её название перед мейном
но все равно ошибка,

а если перед главной функцию оставить, то все нормально работает

Добавлено через 1 минуту
Dani, а не могли бы вы объяснить что в функции происходит?

C++
1
2
3
4
5
6
7
8
9
10
int Count(int n, int b = 0)
{
    if(!n)
        return 0;
    if((1<<(n%10)) & b)
        return Count(n/10, b);
    
    b |= 1<<(n%10);
    return Count(n/10, b)+1;
}
Yandex
Объявления
10.01.2014, 20:19     Количество различных цифр в числе рекурсия
Ответ Создать тему
Опции темы

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