Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
 Аватар для krigan
1 / 1 / 3
Регистрация: 31.10.2012
Сообщений: 93

Сортировка массива поля класса по алфавиту

17.02.2015, 15:37. Показов 1532. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
По условию задания, необходимо создать класс контакты который по желанию пользователя нужно будет отсортировать по алфавиту (по имени или фамилии). Запутался с типами данных для сортировки массива по алфавиту. Прошу на примере кода указать правильный вариант решения задачи.

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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
#include <iostream>
#include <fstream>
#include <string>
#include <direct.h>
#include <io.h>
using namespace std;
//////////////////////////////////////////////////////////////////////////////////////////////////
class Date // класс дата рождения
    {
        
    public:
        int year;
        int month;
        int day;
        Date()
        {
            year = 0;
            month = 0;
            day = 0;
        }
    };
class Time // класс времени
{
    public:
        int hour;
        int minute;
    
        Time()
        {
            hour = 0;
            minute = 0;
        }
};
class Task
{
    public:
    string text;
    Time time;
    Date date;
 
    Task()
    {
        text = "Текст";
    }
};
//++++++++++++++++++++++++++++++++++++++++++++++++++++++ КОНТАКТЫ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
class Contact //класс контакты
{
        
public:
    string name, surname, email, tel; 
    Date bday;  
 
    Contact() //конструктор по умолчанию
    {    
    }
 
    Contact(string newname, string newsname, string newemail, string newtel, int newday, int newmonth, int newyear)
    {
        name = newname;
        surname = newsname;
        email = newemail;
        tel = newtel;       
        bday.day = newday;
        bday.month = newmonth;
        bday.year = newyear;
    }
 
    void Show()
    {
        cout << "\nИмя: " << name << "\n"
                "Фамилия: " << surname << "\n"
                "Email: " << email << "\n"
                "Телефон: " << tel << "\n"
                "Дата рождения: " << bday.day << ". " << bday.month << ". " << bday.year <<"\n";
    }   
 
    void Export()
    {
    ifstream Fin;
    ofstream Fout;
    Fout.open("Contact.txt");
    Fout <<     "\nИмя: " << name << "\n"
                "Фамилия: " << surname << "\n"
                "Email: " << email << "\n"
                "Телефон: " << tel << "\n"
                "Дата рождения: " << bday.day << ". " << bday.month << ". " << bday.year <<"\n";
                Fout.close();   
    }   
};
/////////////////////////////////////////////////////////////////////////////////////////////////////
int main()
{
    setlocale(LC_ALL,"rus");
           
    const int n = 4;
    Contact *Book[n] =
    {
        new Contact("Андрей","Пупкин","krigan@gmail.com","0634511981",7,3,1983),
        new Contact("Виталий","Заха","zaka@gmail.com","0959212203",10,7,1982),
        new Contact("Александр","Карпов","sasha@gmail.com","123456789",15,7,1989),
        new Contact("Гена","Граев","gena@gmail.com","987654321",5,7,1985)
    };
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Вывод на экран всех контактов + экспорт контактов в файл Contact.txt
    for (int i = 0; i < n; i++)
    {
        Book[i]->Show();
        Book[i]->Export();  //Експорт контактов в файл     
    }
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Показ всех именинников этого месяца 
    int m = 0;
    while (m > 12 || m <= 0) // проверка на дурака
        {
           cout<<"\nВведите месяц для поиска именников: ";       
           cin >> m;
       }
     
 
        for (int i = 0; i < 1; i++) //Имининники этого месяца;
            if (m!=Book[i]->bday.month)
        {         
           {            
             cout<<"\nИменникиов в " << m << "-ом месяце нет \n";
           }
        }     
 
        else
 
           cout<<"\nИменники в " << m << " - ом месяце: \n";
 
        for (int i = 0; i < n; i++) //Имининники этого месяца
        {
            if (m==Book[i]->bday.month)
            cout<< Book[i]->name << ends << Book[i]->surname <<endl;                
        }           
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////          
//Сортировка контактов по алфавиту
        for ( int i = 0; i < n - 1; i++) 
        for ( int j = i + 1; j < n - 1; j++) 
        { 
            if(strcmp(Book[i].surname, Book[j]->surname) > 0)  
            {
                char* temp = new char[n]; 
                strcpy(temp, Book[i]->surname); 
                strcpy(Book[i]->surname, Book[j]->surname); 
                strcpy(Book[j]->surname, temp); 
            } 
        } 
        
        cout << "\nОтсортированные контакты по алфавиту: " << endl;
 
    for(size_t i=0; i<n; ++i, cout <<endl)
        cout << Book[i]->surname;
    
    
return 0;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.02.2015, 15:37
Ответы с готовыми решениями:

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

Сортировка массива по алфавиту
Добрый день. Помогите пожалуйста сделать программу сортировки по алфавиту. Заранее спасибо.

Сортировка массива по алфавиту
Ребят сделал скрин с данной таблицей. так же скрин с моим кодом и результат в таблице. вообщем 2 строку удаляет совсем и ставит кол-во на...

4
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
17.02.2015, 15:47
У тебя же string, зачем эти strcpy()? Сравнивай по-простому.
0
 Аватар для krigan
1 / 1 / 3
Регистрация: 31.10.2012
Сообщений: 93
17.02.2015, 16:16  [ТС]
Что нужно попросить пользователя ввести чтобы потом сравнить при сортировке?
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
17.02.2015, 16:28
Вариант сортировки. В виде числа, например.
0
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,244
17.02.2015, 16:41
По именинникам
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//Именинники этого месяца
int i;
for (i = 0; i < n; i++) 
   if (m==Book[i]->bday.month)
      break;
 if(i==n)
   cout<<"\nИменников в " << m << " - ом месяце нет: \n";
else
{
   cout<<"\nИменники в " << m << "-ом месяце:\n";
   for (int i = 0; i < n; i++) //Имининники этого месяца
   {
       if (m==Book[i]->bday.month)
       cout<< Book[i]->name << ends << Book[i]->surname <<endl;                
   }
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.02.2015, 16:41
Помогаю со студенческими работами здесь

сортировка массива по алфавиту
Наверняка тема поднималась уже не раз, но т.к. поиск тут не работает, поднимаю тему. Есть массив из слов, надо его отсортировать по...

Сортировка массива структур по алфавиту
Есть у нас база данных фильмов. И нужно отсортировать вывод их названия в алфавитном порядке. Я как бы сделал это, но оно ещё и выводит...

Сортировка двумерного массива по алфавиту
Помогите, пожалуйста, написал программу, но она выдает ошибку. Исходник могу скинуть, там 10 фамилий. Дан список группы в 10 человек в...

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

Сортировка массива слов по алфавиту
Составить программу, в которой организованы следующие действия: сортировка массива слов по алфавиту; выборка из массива слов,...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru