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

Найти количество чисел, составленных из цифр a, b, c - C++

Восстановить пароль Регистрация
 
Senarist
32 / 32 / 10
Регистрация: 14.03.2014
Сообщений: 509
22.06.2014, 11:13     Найти количество чисел, составленных из цифр a, b, c #1
//На отрезке [100,N] (210<N<231) найти количество чисел, составленных из цифр a,b,c.
//Использовать подпрограмму, которая на вход получает N,a,b,c а выдает количество интересующих чисел в виде массива символов.
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
#include<iostream>
using namespace std;
 
void rec(long long int s, long long int n, int a, int b, int c, int &res) 
{
    long long tmp=s*10+a; //проверяем переменную составленную из переменных a, b и c
    if(tmp<n)//       проверка границы отрезка
    {           //-----------------------------------
        if(tmp>100)// проверка границы отрезка
        {
            cout<<tmp<<endl; res++;}
            
        rec(tmp, n, a, b, c, res);//вызов рекурсивной функции из самой функции
    }
    tmp=s*10+b;            
    if(tmp<n)
    {
        if(tmp>100)
        {
            cout<<tmp<<endl; res++;}
        rec(tmp, n, a, b, c, res);
    }
    tmp=s*10+c;
    if(tmp<n)
    {
        if(tmp>100)
        {
            cout<<tmp<<endl; res++;}
        rec(tmp, n, a, b, c, res);
    }
    
}
 
int main()
{
    long long int n;
    int a,b,c, res=0;
    cout<<"n= "; cin>>n;
    cout<<"a= "; cin>>a;
    cout<<"b= "; cin>>b;
    cout<<"c= "; cin>>c;
    char * resl=new char[5];
    resl=rec(0,n,a,b,c,res);
    cout<<"Res= "<<resl<<endl;
    //return 0;
    system("pause");
}
В данном задании не выполнено условие: "а выдает количество интересующих чисел в виде массива символов".
Помогите пожалуйста, тут надо,я так понял воспользоваться указателем, а я с ними еще не разбирался.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.06.2014, 11:13     Найти количество чисел, составленных из цифр a, b, c
Посмотрите здесь:

C++ дано натуральное число N. Определить,во сколько раз произведение цифр числа больше суммы цифр.Найти количество чётных цифр в записи числа!!
Найти все натуральные числа в диапазоне между m и n (m<n), в записи которых нет двух одинаковых цифр. Подсчитать количество таких чисел. C++
C++ Дана последовательность n натуральных чисел. Для каждого числа вычислить количество его цифр и сумму этих цифр. Вывести на экран каждое число, количес
Найти количество цифр, которые входят в каждое из 3 чисел C++
C++ Найти в массиве количество простых чисел,больших суммы цифр первого числа
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
BatonPro
30 / 30 / 24
Регистрация: 21.06.2014
Сообщений: 81
22.06.2014, 12:17     Найти количество чисел, составленных из цифр a, b, c #2
Нужно заменить вывод на экран на запись результатов в строку:

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
48
49
50
51
52
53
54
55
56
57
58
59
60
#include<iostream>
using namespace std;
 
void rec(long long int s, long long int n, int a, int b, int c, int &res,char *resStr) 
{
    char numStr[4];
    long long tmp=s*10+a; //проверяем переменную составленную из переменных a, b и c
    if(tmp<n)//       проверка границы отрезка
    {           //-----------------------------------
        if(tmp>100)// проверка границы отрезка
        {
            itoa(tmp,numStr,10);
            strcat(resStr,numStr);
            strcat(resStr,"\n");
            res++;}
            
        rec(tmp, n, a, b, c, res,resStr);//вызов рекурсивной функции из самой функции
    }
    tmp=s*10+b;            
    if(tmp<n)
    {
        if(tmp>100)
        {
            itoa(tmp,numStr,10);
            strcat(resStr,numStr);
            strcat(resStr,"\n");
            res++;}
        rec(tmp, n, a, b, c, res,resStr);
    }
    tmp=s*10+c;
    if(tmp<n)
    {
        if(tmp>100)
        {
            itoa(tmp,numStr,10);
            strcat(resStr,numStr);
            strcat(resStr,"\n");
            res++;}
        rec(tmp, n, a, b, c, res,resStr);
    }
    
}
 
int main()
{
    long long int n;
    int a,b,c, res=0;
    char resStr[200];
    resStr[0]=0;
    cout<<"n= "; cin>>n;
    cout<<"a= "; cin>>a;
    cout<<"b= "; cin>>b;
    cout<<"c= "; cin>>c;
    
    rec(0,n,a,b,c,res,resStr);
    cout<<"Res= "<<res<<endl;
    cout<<resStr;
    system("pause");
    return 0;
}
Senarist
32 / 32 / 10
Регистрация: 14.03.2014
Сообщений: 509
22.06.2014, 13:59  [ТС]     Найти количество чисел, составленных из цифр a, b, c #3
хм.. Мне сказали что здесь надо исп. указатель ->
BatonPro
30 / 30 / 24
Регистрация: 21.06.2014
Сообщений: 81
22.06.2014, 14:58     Найти количество чисел, составленных из цифр a, b, c #4
Цитата Сообщение от Senarist Посмотреть сообщение
->
Это не указатель, это оператор доступа к члену класса или структуры, и не имеет никакого отношения к массиву символов.

Указатель здесь используется только для передачи строки resStr в функцию rec.
C++
1
void rec(long long int s, long long int n, int a, int b, int c, int &res,char *resStr)
C++
1
char *resStr
Senarist
32 / 32 / 10
Регистрация: 14.03.2014
Сообщений: 509
22.06.2014, 15:10  [ТС]     Найти количество чисел, составленных из цифр a, b, c #5
понял. значит препод че то бредил

Добавлено через 1 минуту
А можете мне объяснить чем отличается код от того который вы написали в плане реализации?
BatonPro
30 / 30 / 24
Регистрация: 21.06.2014
Сообщений: 81
22.06.2014, 17:48     Найти количество чисел, составленных из цифр a, b, c #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Я сейчас заметил, что невнимательно прочитал условие, мой предыдущий код не подходит(возвращает в виде строки не количество чисел, а сами числа),вот правильный, в комментариях - отличия от первоначального.

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
48
49
50
51
52
53
54
55
56
#include<iostream>
using namespace std;
 //функция возвращает значение - указатель на строку, в которой хранится количество чисел
char* rec(long long int s, long long int n, int a, int b, int c) //не принимает в качестве входного параметра int &res
{
    static int res=0; //счетчик чисел, объявлен статическим, чтобы сохранять своё значение при рекурсии
    static char* resStr=new char[5]; //указатель на строку, в которую запишется количество чисел
                                    //объявлен статическим, чтобы память не выделялась каждый раз при вызове функции
    long long tmp=s*10+a; //проверяем переменную составленную из переменных a, b и c
    if(tmp<n)//       проверка границы отрезка
    {           //-----------------------------------
        if(tmp>100)// проверка границы отрезка
        {
            cout<<tmp<<endl;
            res++;}
            
        rec(tmp, n, a, b, c);//вызов рекурсивной функции из самой функции
    }
    tmp=s*10+b;            
    if(tmp<n)
    {
        if(tmp>100)
        {
            cout<<tmp<<endl;
            res++;}
        rec(tmp, n, a, b, c);
    }
    tmp=s*10+c;
    if(tmp<n)
    {
        if(tmp>100)
        {
            cout<<tmp<<endl;
            res++;}
        rec(tmp, n, a, b, c);
    }
    itoa(res,resStr,10);//преобразуем целочисленное значение в строку, 10 - основание системы счисления
    return resStr;//возвращаем указатель на строку с количеством чисел
    
}
 
int main()
{
    long long int n;
    int a,b,c;
    
    cout<<"n= "; cin>>n;
    cout<<"a= "; cin>>a;
    cout<<"b= "; cin>>b;
    cout<<"c= "; cin>>c;
    char *resl;
    resl=rec(0,n,a,b,c);
    cout<<"Res= "<<resl<<endl;
    system("pause");
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.06.2014, 19:16     Найти количество чисел, составленных из цифр a, b, c
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
Senarist
32 / 32 / 10
Регистрация: 14.03.2014
Сообщений: 509
22.06.2014, 19:16  [ТС]     Найти количество чисел, составленных из цифр a, b, c #7
Спасибо! Сам бы не написал. ООП пока еще не проходили
Yandex
Объявления
22.06.2014, 19:16     Найти количество чисел, составленных из цифр a, b, c
Ответ Создать тему
Опции темы

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