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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
ChuckNorris
2 / 2 / 0
Регистрация: 25.10.2012
Сообщений: 42
#1

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

07.03.2013, 21:18. Просмотров 1328. Ответов 5
Метки нет (Все метки)

Помогите пожалуйста
У меня есть класс покупатель и нужно дописать функцию которая отсортировала бы по алфавиту по фамилии всех введенных покупателей. Вот что у меня есть:

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;
 }
просьба очень больших и очень сложних функций не пишите
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.03.2013, 21:18
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сортировка по алфавиту поля класса (C++):

Сортировка массива поля класса по алфавиту - C++
По условию задания, необходимо создать класс контакты который по желанию пользователя нужно будет отсортировать по алфавиту (по имени или...

Использование в качестве поля класса указатель на объект другого класса - C++
Ошибка в названии - &quot;указателЯ&quot; Вот, пытаюсь освоить ООП (пока только учусь): создаю класс person (человек) и car (модель машины). ...

Сортировка по алфавиту - C++
Ознакамливаюсь со структурами. Все прекрасно, осталось только отсортировать символьные массивы по алфавиту. Вот мой текст, в комментариях...

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

сортировка по алфавиту - C++
Задача: Описать структуру с именем PRICE, содержащую следующие поля: название товара; название магазина, в котором продается...

Сортировка по алфавиту - C++
Нужно отсортировать список студентов за месяцем рождения, Студенты, месяц у которых одинаков - должны быть отсортированы по алфавиту(их...

5
yoghurt92
374 / 345 / 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;
 
            }
1
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;
 
            }
скажи пожалуйста что есть что и как это привязать к моему коду?
0
yoghurt92
374 / 345 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
07.03.2013, 22:06 #4
ChuckNorris, допустим у тебя есть массив фамилий, ты берешь и сравниваешь фамилию и сортируешь методом пузырька их, в итоге получается отсортированный массив в алфавитном порядке, если надо посмотри strcmp как работает)
1
ChuckNorris
2 / 2 / 0
Регистрация: 25.10.2012
Сообщений: 42
07.03.2013, 22:18  [ТС] #5
Цитата Сообщение от yoghurt92 Посмотреть сообщение
ChuckNorris, допустим у тебя есть массив фамилий, ты берешь и сравниваешь фамилию и сортируешь методом пузырька их, в итоге получается отсортированный массив в алфавитном порядке, если надо посмотри strcmp как работает)
понял grup это массив, а что такое Sworker t?

я просто хочу все хорошо понять и поэтому спрашиваю)))
0
yoghurt92
374 / 345 / 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;
}
1
07.03.2013, 23:13
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.03.2013, 23:13
Привет! Вот еще темы с ответами:

Сортировка по алфавиту - C++
Вот программа , там сортировка по нумерации поездов, а нужна по ПУНКТАМ назначения, кто знает поправите, спасибо. ...

Сортировка по алфавиту - C++
Нужно ввести в программу данные о футболисте, отсортировать их по фамилии футболиста(т.е. первой строке таблицы) и вывести на экран....

Сортировка по алфавиту - C++
Доброго времени суток, появилась проблема: есть структура, читаю из файла, нужно вывести только те спектакли, которые поставленны введенным...

Сортировка по алфавиту - C++
Доброго времени суток. Имеется задача: Описать структуру с именем ORDER, содержащую следующие поля: *расчетный счет плательщика ...


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

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

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