Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
1 / 1 / 1
Регистрация: 02.01.2013
Сообщений: 123
1

Сортировка массива структур

08.01.2013, 17:40. Показов 807. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привет всем ! как отсортировать массив структур ? а то почему не получается ...
вот код
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 <stdio.h>
 
#define g_max 255
 
using namespace std;
 
struct INFO
{
    char name[g_max];
    char surname[g_max];
    char patronymic[g_max];
    char institute[g_max];
    int groups;
};
 
int main()
{
    FILE* file;
    INFO info, array[g_max];
    int value, n, count(0);
    char filename[g_max];
    cout<<"1. Записать файл"
        <<endl
        <<"2. Прочитать файл"<<endl;
    cin>>value;
    if(value == 1)
    {
        cout<<"Введите имя файла: ";
        cin>>filename;
        if((file = fopen(filename, "wb")) == NULL)
            perror("Не удается создать файл: ");
        cout<<"Количество студентов: ";
        cin>>n;
        for(int i = 0; i < n; i++)
        {
            cout<<"Имя: ";
            cin>>info.name;
            cout<<"Фамилия: ";
            cin>>info.surname;
            cout<<"Отчество: ";
            cin>>info.patronymic;
            cout<<"Институт: ";
            cin>>info.institute;
            cout<<"Номер группы: ";
            cin>>info.groups;
            fwrite(&info, sizeof(INFO), 1, file);
        }
        cout<<"Запишь успешно записан"<<endl;
        fclose(file);
    }
    else if(value == 2)
    {
        cout<<"Введите имя файла: ";
        cin>>filename;
        if((file = fopen(filename, "rb")) == NULL)
            perror("Не открывается файл: ");
        else while(fread(&info, sizeof(INFO), 1, file))
        {
            array[count++] = info;
            cout<<"Имя: "<<info.name
                <<endl
                <<"Фамилия: "<<info.surname
                <<endl
                <<"Отчество: "<<info.patronymic
                <<endl
                <<"ВУЗ: "<<info.institute
                <<endl
                <<"Номер группы: "<<info.groups<<endl<<endl;
        }
        fclose(file);
    }
    else cout<<"Error";
    INFO buf[g_max];
    for(int i = count - 1; i > 0; i--) //сортировка 
        for(int j = 0; j < i; j++)
            if(array[j].institute > array[j + 1].institute)
            {
                buf[i] = array[j];
                array[j] = array[j + 1];
                array[j + 1] = buf[i];
            }
    
    
    cout<<"Имя"<<endl;
    for(int i = 0; i < count; i++)
        cout<<array[i].name<<'\t';
    cout<<endl<<"Фамилия"<<endl;
    for(int i = 0; i < count; i++)
        cout<<array[i].surname<<'\t';
    cout<<endl<<"Отчество"<<endl;
    for(int i = 0; i < count; i++)
        cout<<array[i].patronymic<<'\t';
    cout<<endl<<"ВУЗ"<<endl;
    for(int i = 0; i < count; i++)
        cout<<array[i].institute<<'\t';
    cout<<endl<<"ГР"<<endl;
    for(int i = 0; i < count; i++)
        cout<<array[i].groups<<'\t';
    return 0;
}
Добавлено через 2 минуты
именно отсортировать отдельное поле ...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.01.2013, 17:40
Ответы с готовыми решениями:

Сортировка массива структур через сортировку массива указателей
Ошибка возникает в функции void sort(student **ppStud, int k, char ch). Кто видит ошибку -...

Сортировка массива структур
Господа есть массив структур, необходимо его отсортировать по полю name с помощью функции qsort....

Сортировка массива структур
Не могу понять как отсортировать массив структур по убыванию, попробовал несколько алгоритмов,но не...

Сортировка массива структур
Имеется структура : struct Data_base { string team_name; string city; int ...

4
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
08.01.2013, 17:41 2
Цитата Сообщение от septe-mber Посмотреть сообщение
for(int i = count - 1; i > 0; i--) //сортировка
* * * * for(int j = 0; j < i; j++)
* * * * * * if(array[j].institute > array[j + 1].institute)
* * * * * * {
* * * * * * * * buf[i] = array[j];
* * * * * * * * array[j] = array[j + 1];
* * * * * * * * array[j + 1] = buf[i];
* * * * * * }
А почему с j+1? С i как то очевидней. И почему буфер имеет размер массива? Достаточно буфера в один элемент.
0
1 / 1 / 1
Регистрация: 02.01.2013
Сообщений: 123
08.01.2013, 17:57  [ТС] 3
taras atavin, я хочу отдельное поле institute отсортировать , вот и задал такое буфер....
0
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
08.01.2013, 18:01 4
Назначение поля на ключ сортировки с буфером ни как не связано, раз по полю, то просто его надо сравнивать, а буфер в любом случае используется для временного хранения одного элемента, пока он не записан на место элемента, занявшего его место. Так зачем же раздувать буфер до фантастических размеров? Это же не бак на молокозаводе.
0
1 / 1 / 1
Регистрация: 02.01.2013
Сообщений: 123
08.01.2013, 18:17  [ТС] 5
taras atavin, можешь прислать пример ? ) а то все никак не получается...
0
08.01.2013, 18:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.01.2013, 18:17
Помогаю со студенческими работами здесь

Сортировка массива структур
Разьясните пожалуйста в как можно поступить по другому. Не выделяя, как у меня дополнительный...

Сортировка массива структур
Дана структура WORKER и массив из 10 стркутур. Нужно 1)сортировать список 2) вывести на экран...

Сортировка массива структур
Написать программу, выполняющую следующие действия: • ввод с клавиатуры данных в массив, состоящий...

Сортировка массива структур
не могу понять почему не работает. Программа должна сортануть массив из 10 елементов типа Struct....


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru