10 / 10 / 0
Регистрация: 20.09.2013
Сообщений: 22
1

Сортировка qsort в классе

07.10.2013, 22:07. Показов 2025. Ответов 3
Метки нет (Все метки)

Здравствуйте! Все никак не получается, решил обратиться за помощью. Как мне отсортировать массив объектов класса по полю Num c помощью сишной функции qsort? Вот сам код:
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#include <iostream>
#include <Windows.h>
#include <string>
using namespace std;
 
class TMarsh{
private:
    struct Marsh
    {
    string Begst;
    string Term;
    int Num;
    };
public:
    Marsh *first_trafic;
    TMarsh();
    ~TMarsh();
    TMarsh(string, string, int);
    void Set_Begst(string);
    string Get_Begst();
    void Set_Term(string);
    string Get_Term();
    void Set_Num(int);
    int Get_Num();
    static void Show(TMarsh *trafic);
};
 
TMarsh::TMarsh()
{
    first_trafic=new Marsh;
}
TMarsh::TMarsh(string start, string end, int number)
{
    Set_Begst(start);
    Set_Term(end);
    Set_Num(number);
}
void TMarsh::Set_Begst(string start)
{
    first_trafic->Begst=start;
}
void TMarsh::Set_Term(string end)
{
    first_trafic->Term=end;
}
void TMarsh::Set_Num(int number)
{
    first_trafic->Num=number;
}
string TMarsh::Get_Begst()
{
    return first_trafic->Begst;
}
string TMarsh::Get_Term()
{
    return first_trafic->Term;
}
int TMarsh::Get_Num()
{
    return first_trafic->Num;
}
TMarsh::~TMarsh()
{
    delete first_trafic;
}
void TMarsh::Show(TMarsh *trafic){
    for (int i=0; i<3; i++)
    {
        cout<<trafic[i].Get_Begst()<<" "<<trafic[i].Get_Term()<<" "<<trafic[i].Get_Num()<<endl;
    }
}
int main()
{
    string start, end;
    int number;
    const int n=3;
    TMarsh *trafic = new TMarsh[n];
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    for(int i=0; i<3; i++)
    {
        cout<<i+1<<".Введите начальный маршрут: ";
        getline(cin, start);
        cout<<i+1<<".Введите конечный маршрут: ";
        getline(cin, end);
        cout<<i+1<<".Введите номер маршрута: ";
        cin>>number;
        trafic[i].Set_Begst(start);
        trafic[i].Set_Term(end);
        trafic[i].Set_Num(number);
        cin.get();
    }
    TMarsh::Show(trafic);
    return 0;
}
Буду признателен, если кто подскажет как)
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.10.2013, 22:07
Ответы с готовыми решениями:

сортировка qsort
Есть динамический массив, содержащий строки в строках слова, формат такой аа бб вв гг Как...

Сортировка qsort
Доброго времени суток, уже применял qsort для сортировки цифр, но не могу найти его для алфавита....

Сортировка вектора QSort
Есть сортировка массива: template&lt;class T&gt; void quickSortR(T* a, long N) { // На входе - массив...

Сортировка имен с помощью qsort;
Вот программа которую я нашел здесь: #include &lt;stdio.h&gt; #include &lt;string.h&gt; #include &lt;stdlib.h&gt;...

3
Don't worry, be happy
17769 / 10534 / 2034
Регистрация: 27.09.2012
Сообщений: 26,505
Записей в блоге: 1
07.10.2013, 22:15 2
Создать свою функцию сравнения элементов и передать её в качестве последнего параметра qsort
1
3834 / 3135 / 872
Регистрация: 25.03.2012
Сообщений: 11,577
Записей в блоге: 1
07.10.2013, 22:24 3
дел

Добавлено через 8 минут
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#include <iostream>
#include <Windows.h>
#include <string>
using namespace std;
 
class TMarsh{
private:
    struct Marsh
    {
    string Begst;
    string Term;
    int Num;
    };
    Marsh *first_trafic;
public:
    TMarsh();
    ~TMarsh();
    TMarsh(string, string, int);
    void Set_Begst(string);
    string Get_Begst();
    void Set_Term(string);
    string Get_Term();
    void Set_Num(int);
    int Get_Num();
    static void Show(TMarsh *trafic);
};
TMarsh::TMarsh()
{
    first_trafic=new Marsh;
}
TMarsh::TMarsh(string start, string end, int number)
{
    Set_Begst(start);
    Set_Term(end);
    Set_Num(number);
}
void TMarsh::Set_Begst(string start)
{
    first_trafic->Begst=start;
}
void TMarsh::Set_Term(string end)
{
    first_trafic->Term=end;
}
void TMarsh::Set_Num(int number)
{
    first_trafic->Num=number;
}
string TMarsh::Get_Begst()
{
    return first_trafic->Begst;
}
string TMarsh::Get_Term()
{
    return first_trafic->Term;
}
int TMarsh::Get_Num()
{
    return first_trafic->Num;
}
TMarsh::~TMarsh()
{
    delete first_trafic;
}
void TMarsh::Show(TMarsh *trafic){
    for (int i=0; i<3; i++)
    {
        cout<<trafic[i].Get_Begst()<<" "<<trafic[i].Get_Term()<<" "<<trafic[i].Get_Num()<<endl;
    }
}
int TMarsh_Num_Cmp(const void * a, const void * b)
{
    int n1=((TMarsh*)a)->Get_Num();
    int n2=((TMarsh*)b)->Get_Num();
    return n1-n2;
}
int main()
{
    string start, end;
    int number;
    const int n=3;
    TMarsh *trafic = new TMarsh[n];
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    for(int i=0; i<3; i++)
    {
        cout<<i+1<<".Введите начальный маршрут: ";
        getline(cin, start);
        cout<<i+1<<".Введите конечный маршрут: ";
        getline(cin, end);
        cout<<i+1<<".Введите номер маршрута: ";
        cin>>number;
        trafic[i].Set_Begst(start);
        trafic[i].Set_Term(end);
        trafic[i].Set_Num(number);
        cin.get();
    }
    qsort (trafic, 3, sizeof(int), TMarsh_Num_Cmp);
    TMarsh::Show(trafic);
    return 0;
}
1
10 / 10 / 0
Регистрация: 20.09.2013
Сообщений: 22
07.10.2013, 22:34  [ТС] 4
Просто огромнейшее спасибо!!!...с функцией сравнения я никак не мог разобраться..
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.10.2013, 22:34
Помогаю со студенческими работами здесь

Сортировка двумерного массива методом qsort
#include &lt;iostream&gt; using namespace std; std::string data; int cmp(const void *a, const void...

Сортировка записей класса через функцию qsort
Имеется класс. На определённом этапе надо отсортировать его. Записи должны быть размещены в...

Сортировка в классе
Задание: Описать класс WORKER, содержащий следующие поля: •фамилия и инициалы работника;...

Сортировка в классе
Описать 2 метода (пузырька и выбора) в одном классе


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru