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

Сортировка по любому полю - C++

Восстановить пароль Регистрация
 
kura007
1 / 1 / 0
Регистрация: 02.12.2012
Сообщений: 17
11.05.2013, 13:40     Сортировка по любому полю #1
Обработать массив структур следующим образом:
п.1) ввести элементы массива с клавиатуры(текущее количество эле-
ментов массива вводится с клавиатуры (по соответствующему
запросу) каждый раз после запуска программы);
п.2) вывести на экран все элементы массива. Поля каждой структуры
вывеси на экран в строку и получить таким образом на экране
"таблицу", содержащую в каждой своей строке поля соответ-
ствующей структуры;
п.3) произвести редактирование любой записи массива по выбору
пользователя(пользователь выбирает нужную запись согласно
"таблицы", которая будет выведена на экран при выполнении
п.2 этой лабораторной работы и нужное ему поле для редакти-
рования). Редактирование записи реализовать отдельной функци-
ей.
Для выбора пользователем выполняемого действия(п.1, п.2 или п.3)
организовать простейшее меню(меню реализовать отдельной функцией
без использования функций работы с клавиатурой).

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
#include "stdafx.h"
#include "iostream"
#include "conio.h"
#include "malloc.h"
using namespace std;
 
 
 
int menu (void);
void redact (int,int);
 
struct institut{
    char name[20];
    char predmet[20];
    int good;
    }*a;
 
void main ()
{
    int num,n,str,stb;
    char q='y';
    while (q=='y')
    {
        num=menu();
        switch (num){
        case 1:{
                free(a);
                cout<<"wwedi kol-wo strok"<<endl;
                cin>>n;
                a=(struct institut*) malloc (sizeof(struct institut)*n);
                for (int i=0;i<n;i++){
                        cout<<"wwedite imia studenta  ";
                        cin>>a[i].name;
                        cout<<"wwedite predmet ";
                        cin>>a[i].predmet;
                        cout<<"wwedite ocenku studenta ";
                        cin>>a[i].good;
                    }
            }break;
        case 2:{ for (int i=0;i<n;i++)
cout<<a[i].name<<" "<<a[i].predmet<<" "<<a[i].good<<endl;
            }break;
case 3:{ cout<<"wwedite stroku i stolbec kotorii neobhodimo otredaktirowat'"<<endl;
                 cin>>str;
                 cin>>stb;
                 redact(str,stb);
            } break;
    }
        cout<<"prodolzhit'?(y/n)";
        cin>>q;
    }
}
 
int menu(void){
    int num;
    cout<<endl<<"1.sozdat' structuru"<<endl<<
            "2.wiwesti structuru"<<endl<<
            "3.redaktirowat'"<<endl;
    cin>>num;
    return num;
}
 
void redact (int str,int stb){
    cout<<"wwedite nowii parametr"<<endl;
    switch (stb){
    case 1:{ cin>>a[str-1].name; break;}
    case 2:{ cin>>a[str-1].predmet; break;}
    case 3:{ cin>>a[str-1].good; break;}
    }
}

Как теперь сделать сортировку по любому полю?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.05.2013, 13:40     Сортировка по любому полю
Посмотрите здесь:

C++ Сортировка структур по полю
Поиск по любому полю структуры C++
C++ Сортировка списка по полю
Сортировка по структуры по полю ФИО C++
C++ Сортировка по полю структуры
C++ Сортировка структуры по полю
C++ Сортировка массива структур через switch по любому полю
C++ Сортировка массива структур по определенному полю

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ternsip
 Аватар для Ternsip
660 / 188 / 6
Регистрация: 10.05.2012
Сообщений: 595
11.05.2013, 15:00     Сортировка по любому полю #2
kura007, просто заводишь вектор твоих объектов a; далее так : sort(a.begin(), a.end(), pred(idx)), где pred - булева функция (которая принимает 3 аргумента твойтип a, твойтип b, int idx), а idx - номер поля, по которому нужно сортировать в ней ты опишешь следующее
if (idx == 0) return (a.первое поле < b.первое поле)
if (idx == 1) return .... итд

Добавлено через 6 секунд
kura007, http://www.cplusplus.com/reference/algorithm/sort/
Yandex
Объявления
11.05.2013, 15:00     Сортировка по любому полю
Ответ Создать тему
Опции темы

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