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

Сортировка по алфавиту поля класса - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
ChuckNorris
2 / 2 / 0
Регистрация: 25.10.2012
Сообщений: 42
07.03.2013, 21:18     Сортировка по алфавиту поля класса #1
Помогите пожалуйста
У меня есть класс покупатель и нужно дописать функцию которая отсортировала бы по алфавиту по фамилии всех введенных покупателей. Вот что у меня есть:

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
# include <iostream>
# include <locale.h>
# include <conio.h>
using namespace std;
 
const int n = 2;
 
class Customer
{
 
private:
 char pr [20]; / / фамилия
 char ima [20];/ / имя
 char pobat [20];/ / отчество
 
 
public:
 Customer ();/ / конструктор для инициализации данных
void show ();/ / функция которая показывает информацию о всех введенных покупателей
 
 
};
 
 
Customer :: Customer ()
 
{
cout << "Фамилия клиента:";
cin >> pr;
 
cout << "Имя клиента:";
cin >> ima;
 
cout << "Отчество клиента:";
cin >> pobat;
 
cout << endl;
 }
 
 
 
void Customer :: show ()
{
 cout << "Клиент:" << pr << " " << ima << " "<< pobat << " "<< "\ n";
 cout << endl;
 
 
 
 
 
 
}
 
 
int main () {
 
 setlocale (LC_ALL, "Russian")
 Customer mas [n];/ / массив объектов типа класс
 
 cout << "Информация:";
 cout << "\ n";
 for (int i = 0; i <n; i + +)
 mas [i]. show ();
 
getch ();
 return 0;
 }
просьба очень больших и очень сложних функций не пишите
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.03.2013, 21:18     Сортировка по алфавиту поля класса
Посмотрите здесь:

C++ Сортировка по алфавиту
Сортировка по алфавиту C++
C++ Сортировка по алфавиту
Сортировка по алфавиту C++
Сортировка по алфавиту C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
07.03.2013, 21:54     Сортировка по алфавиту поля класса #2
ChuckNorris, можно вот так, если есть массив

C++
1
2
3
4
5
6
7
8
9
for(i = 0; i < n-1; i++)
        for( int j = i+1; j < n; j++)
            if(strcmp(grup[i].Fam, grup[j].Fam) > 0)
            {
                Sworker t = grup[i];
                grup[i] = grup[j];
                grup[j] = t;
 
            }
ChuckNorris
2 / 2 / 0
Регистрация: 25.10.2012
Сообщений: 42
07.03.2013, 22:03  [ТС]     Сортировка по алфавиту поля класса #3
Цитата Сообщение от yoghurt92 Посмотреть сообщение
ChuckNorris, можно вот так, если есть массив

C++
1
2
3
4
5
6
7
8
9
for(i = 0; i < n-1; i++)
        for( int j = i+1; j < n; j++)
            if(strcmp(grup[i].Fam, grup[j].Fam) > 0)
            {
                Sworker t = grup[i];
                grup[i] = grup[j];
                grup[j] = t;
 
            }
скажи пожалуйста что есть что и как это привязать к моему коду?
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
07.03.2013, 22:06     Сортировка по алфавиту поля класса #4
ChuckNorris, допустим у тебя есть массив фамилий, ты берешь и сравниваешь фамилию и сортируешь методом пузырька их, в итоге получается отсортированный массив в алфавитном порядке, если надо посмотри strcmp как работает)
ChuckNorris
2 / 2 / 0
Регистрация: 25.10.2012
Сообщений: 42
07.03.2013, 22:18  [ТС]     Сортировка по алфавиту поля класса #5
Цитата Сообщение от yoghurt92 Посмотреть сообщение
ChuckNorris, допустим у тебя есть массив фамилий, ты берешь и сравниваешь фамилию и сортируешь методом пузырька их, в итоге получается отсортированный массив в алфавитном порядке, если надо посмотри strcmp как работает)
понял grup это массив, а что такое Sworker t?

я просто хочу все хорошо понять и поэтому спрашиваю)))
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
07.03.2013, 23:13     Сортировка по алфавиту поля класса #6
ChuckNorris, это я вырвал кусок из кода, Sworker - имя структуры, t - переменная) вы же должны работать с классом, там все аналогично)

Добавлено через 52 минуты
ChuckNorris, вот я тут "каркас" накидал, а дальше можете делать что хотите с программой

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
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
 
class Customer
{
    private:
        char LastName[20],  
             FirstName[20]; 
 
    public:
        Customer()                          //конструктор по умолчанию
        {
            strcpy(LastName, "Cobain");
            strcpy(FirstName, "Kurt");
        }
 
        char *getLastFam(void)              //для получения фамилии
        {
            return LastName;
        }
 
        void enter_customer()               //функция ввода данных о покупателях
        {
            cout << "\nEnter FirstName: ";
                cin.getline(FirstName, sizeof(FirstName));
            cout << "Enter LastName: ";
                cin.getline(LastName, sizeof(LastName));
        }
 
        void show()                         //функция вывода данных о покупателях
        {
            cout << "\nFirstName: " << FirstName;
            cout << "\nLastName: " << LastName << "\n";
        }
};
 
void sort(Customer *mas, int number)                //функция сортировки по алфавиту
{
    for(int i = 0; i < number - 1; i++)
        for(int j = i + 1; j < number; j++)
            if(strcmp(mas[i].getLastFam(), mas[j].getLastFam()) > 0)
            {
                Customer t = mas[i];
                mas[i] = mas[j];
                mas[j] = t;
            }
}
 
int main () 
{
    int number;
    cout << "Enter the number of buyers: ";
        cin >> number;                      //вводим кол-во покупателей
        cin.ignore();
 
    Customer *mas = new Customer[number];       //фвыделяем память под массив покупателей
 
    cout << "\nEnter information about customers:";
    for(int i = 0; i < number; i++)
        mas[i].enter_customer();            //вводим данные
 
    cout << "\nList of customers:";
    for(int i = 0; i < number; i++)
        mas[i].show();                  //выводим данные
 
    sort(mas, number);                          //сортируем по алфавиту
    cout << "\nAlphabetically sorted array:";
    for(int i = 0; i < number; i++)
        mas[i].show();                          //выводим отсортированный массив
 
    delete []mas;                           //освобождаем память
    cout << "\n\n";
    return 0;
}
Yandex
Объявления
07.03.2013, 23:13     Сортировка по алфавиту поля класса
Ответ Создать тему
Опции темы

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