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

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

Войти
Регистрация
Восстановить пароль
 
Senarist
46 / 46 / 12
Регистрация: 14.03.2014
Сообщений: 600
#1

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

22.06.2014, 11:13. Просмотров 411. Ответов 6
Метки нет (Все метки)

//На отрезке [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");
}
В данном задании не выполнено условие: "а выдает количество интересующих чисел в виде массива символов".
Помогите пожалуйста, тут надо,я так понял воспользоваться указателем, а я с ними еще не разбирался.
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.06.2014, 11:13
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти количество чисел, составленных из цифр a, b, c (C++):

В массиве целых чисел найти количество чисел с наименьшим количеством цифр - C++
9. В массиве целых чисел найти количество чисел с наименьшим количеством цифр. Например, в массиве {123, 34, 56, 1000, 20, 55000, 777,...

Найти количество цифр, которые входят в каждое из 3 чисел - C++
Даны три натуральных числа А, В, С. Найдите количество цифр, входящих одновременно в состав каждого из для этих чисел. Входные данные: 3...

Найти количество чисел, в записи которых нет одинаковых цифр - C++
В ВУЗе лабораторная работа по программированию, а преподаватель наша заболела. В первые 4 лабораторные я худо-бедно вник. А вот дальше...

Найти количество чисел в интервале [A, B], у которых сумма цифр равна 8 или 12 - C++
Помогите, плиз. Написать программу, которая находит сумму цифр числа и с ее помощью решить след задачу: даны числа А и В. найти кол-во...

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BatonPro
30 / 30 / 24
Регистрация: 21.06.2014
Сообщений: 81
22.06.2014, 12:17 #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;
}
0
Senarist
46 / 46 / 12
Регистрация: 14.03.2014
Сообщений: 600
22.06.2014, 13:59  [ТС] #3
хм.. Мне сказали что здесь надо исп. указатель ->
0
BatonPro
30 / 30 / 24
Регистрация: 21.06.2014
Сообщений: 81
22.06.2014, 14:58 #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
0
Senarist
46 / 46 / 12
Регистрация: 14.03.2014
Сообщений: 600
22.06.2014, 15:10  [ТС] #5
понял. значит препод че то бредил

Добавлено через 1 минуту
А можете мне объяснить чем отличается код от того который вы написали в плане реализации?
0
BatonPro
30 / 30 / 24
Регистрация: 21.06.2014
Сообщений: 81
22.06.2014, 17:48 #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;
}
0
Senarist
46 / 46 / 12
Регистрация: 14.03.2014
Сообщений: 600
22.06.2014, 19:16  [ТС] #7
Спасибо! Сам бы не написал. ООП пока еще не проходили
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.06.2014, 19:16
Привет! Вот еще темы с ответами:

Вычислить количество трехзначных и нечетных чисел, найти сумму цифр в каждом числе - C++
Доброго времени суток, первый раз пишу на данном форуме, возможно ошибся разделом, возможно что-то еще неправильно сделал, ну да ладно... ...

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

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

Найти в массиве количество четных чисел, сумма цифр в которых не превышает заданного числа P - C++
Найти количество четных чисел, сумма цифр в которых не превышает заданного числа P. При вводе Р=11 все считает правильно , но стоит...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
22.06.2014, 19:16
Ответ Создать тему
Опции темы

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