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

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

Войти
Регистрация
Восстановить пароль
 
septe-mber
0 / 0 / 0
Регистрация: 02.01.2013
Сообщений: 123
#1

Сортировка массива структур - C++

08.01.2013, 17:40. Просмотров 441. Ответов 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
#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 минуты
именно отсортировать отдельное поле ...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.01.2013, 17:40     Сортировка массива структур
Посмотрите здесь:

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

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

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

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

Сортировка массива структур - C++
Разьясните пожалуйста в как можно поступить по другому. Не выделяя, как у меня дополнительный массив. #include&lt;iostream&gt; const...

Сортировка массива структур - C++
Здравствуйте! Помогите пожалуйста реализовать сортировку массива структур по полю &quot;date&quot; (все записи должны быть отсортированны по дате)....

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
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 как то очевидней. И почему буфер имеет размер массива? Достаточно буфера в один элемент.
septe-mber
0 / 0 / 0
Регистрация: 02.01.2013
Сообщений: 123
08.01.2013, 17:57  [ТС]     Сортировка массива структур #3
taras atavin, я хочу отдельное поле institute отсортировать , вот и задал такое буфер....
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
08.01.2013, 18:01     Сортировка массива структур #4
Назначение поля на ключ сортировки с буфером ни как не связано, раз по полю, то просто его надо сравнивать, а буфер в любом случае используется для временного хранения одного элемента, пока он не записан на место элемента, занявшего его место. Так зачем же раздувать буфер до фантастических размеров? Это же не бак на молокозаводе.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.01.2013, 18:17     Сортировка массива структур
Еще ссылки по теме:

Сортировка массива структур - C++
Ругается на использование структуры, соответственно не работает вся программа. Задача: отсортировать массив по типу культур. struct...

Сортировка массива структур - C++
Есть файл с текстом(this is spartaaaaaa!), нужно посчитать количество повторений каждого символа, вывести все это в консоль, затем...

Сортировка массива структур - C++
В общем, то что в названии темы, то и не получается. Не хочет присваиваться адрес предыдущей ячейки в массиве stud1.h #include...

Сортировка массива структур - C++
Нужно создать структуру Student c полями Имя, Номер группы, Оценки (массив из 5 элементов) #include &quot;stdafx.h&quot; using namespace std; ...

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

Сортировка массива структур - C++
Имеется массив структур, который необходимо отсортировать по числовому ключу. Я написал код, но он не работает, поэтому просьба указать на...


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

Или воспользуйтесь поиском по форуму:
septe-mber
0 / 0 / 0
Регистрация: 02.01.2013
Сообщений: 123
08.01.2013, 18:17  [ТС]     Сортировка массива структур #5
taras atavin, можешь прислать пример ? ) а то все никак не получается...
Yandex
Объявления
08.01.2013, 18:17     Сортировка массива структур
Ответ Создать тему
Опции темы

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