0 / 0 / 0
Регистрация: 02.03.2014
Сообщений: 11
1

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

02.03.2014, 16:53. Показов 615. Ответов 0
Метки нет (Все метки)

Проблема следующая: необходимо добавить сортировку по какому-либо признаку, но я понятия не имею, как сделать ее работая с массивами структур. Была идея сравнения полей line\time, но типы в структуре прописаны как string и вычисления проводить не получается, при попытке изменить тип переменных выдает различные ошибки. Так же в конце кривой вывод. Тоже по непонятной мне причине. Не могу разобраться, помогите пожалуйста!!! Программировал в Geany на ubuntu.

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
//Программа вводит\выводит элементы массива структуры и ищет элементы по заданному полю
#include <iostream>
#include <cstdlib> // для очистки экрана
using namespace std;
struct metro
{
    char start_name[30]; //Начальный пункт
    char finish_name[30]; //Конечный пункт
    char time[30]; //Время поездки
    char line[30]; //Номер линии
};
int main()
{
    setlocale(0,"");
    string d;
    int n,i,b,c;
    metro *Arr;
    cout<<"Введите количество элементов массива: ";
    cin>>n;
    Arr = new metro[n]; // массив;
    for (i=0; i<n; i++)
    {
        cout<<"Введите название начального пункта: ";
        cin>> Arr[i].start_name;
        cout<<"Введите название конечного пункта: ";
        cin>> Arr[i].finish_name;
        cout<<"Введите время поездки: ";
        cin>> Arr[i].time;
        cout<<"Введите номер линии: ";
        cin>> Arr[i].line;
        cout<<endl;
    }
    system("clear");
    cout<<endl;
    for (i=0; i<n; i++)
    {
        cout<<endl;
        cout<<"Начальный пункт = "<<i+1<<" "<<Arr[i].start_name<<endl;
        cout<<"Конечный пункт = "<<i+1<<" "<<Arr[i].finish_name<<endl;
        cout<<"Время поездки = "<<i+1<<" "<<Arr[i].time<<endl;
        cout<<"Номер линии = "<<i+1<<" "<<Arr[i].line<<endl;
        cout<<"\n\n ";
    }
 
    cout<<"Поиск по:"<<endl<<"1-начальный пункт"<<endl<<"2-конечный пункт"<<endl
    <<"3-время поездки"<<endl<<"4-номер линии"<<endl;
    cin>>b;
    switch (b)
    case 1:{
        cout<<"Введите начальный пункт: ";
        cin>>d;
        c=0;
        for (i=0; i<n; i++) {
            if(Arr[i].start_name==d){
                cout<<"Начальный пункт = "<<i+1<<Arr[i].start_name<<endl;
                cout<<"Конечный пункт = "<<i+1<<Arr[i].finish_name<<endl;
                cout<<"Время поездки = "<<i+1<<Arr[i].time<<endl;
                cout<<"Номер линии = "<<i+1<<Arr[i].line<<endl;
        cout<<"\n\n ";
                c=c+1;}
                if (c==0){cout<<"Таких начальных пунктов нет";}}break;
    case 2:{
        cout<<"Введите конечный пункт: ";
        cin>>d;
        c=0;
        for (i=0; i<n; i++) {
            if(Arr[i].finish_name==d){
                cout<<"Начальный пункт = "<<i+1<<Arr[i].start_name<<endl;
                cout<<"Конечный пункт = "<<i+1<<Arr[i].finish_name<<endl;
                cout<<"Время поездки = "<<i+1<<Arr[i].time<<endl;
                cout<<"Номер линии = "<<i+1<<Arr[i].line<<endl;
        cout<<"\n\n ";
                c=c+1;}
                if (c==0){cout<<"Таких конечных пунктов нет";}}break;
    case 3:{
        cout<<"Введите время поездки: ";
        cin>>d;
        c=0;
        for (i=0; i<n; i++) {
            if(Arr[i].time==d){
                cout<<"Начальный пункт = "<<i+1<<Arr[i].start_name<<endl;
                cout<<"Конечный пункт = "<<i+1<<Arr[i].finish_name<<endl;
                cout<<"Время поездки = "<<i+1<<Arr[i].time<<endl;
                cout<<"Номер линии = "<<i+1<<Arr[i].line<<endl;
        cout<<"\n\n ";
                c=c+1;}
                if (c==0){cout<<"Такого времени нет";}}break;
    case 4:{
        cout<<"Введите номер линии: ";
        cin>>d;
        c=0;
        for (i=0; i<n; i++) {
            if(Arr[i].line==d){
                cout<<"Начальный пункт = "<<i+1<<Arr[i].start_name<<endl;
                cout<<"Конечный пункт = "<<i+1<<Arr[i].finish_name<<endl;
                cout<<"Время поездки = "<<i+1<<Arr[i].time<<endl;
                cout<<"Номер линии = "<<i+1<<Arr[i].line<<endl;
        cout<<"\n\n ";
                c=c+1;}
                if (c==0){cout<<"Таких линий нет";}}break;
        return 0;
    }}}}}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.03.2014, 16:53
Ответы с готовыми решениями:

Сортировка в массиве структур
Здравствуйте . Вот я создаю структуру: struct Data //описываемая структура { int m;...

Поиск и сортировка в массиве структур
Доброго времени суток! Нужна помощь! Уменьшить на 10% стоимость билетов тех рейсов, время в...

Блочная сортировка структур (Отсортировать массив структур по фамилии)
Подскажите алгоритм блочной сортировки структур на языке С++. Мне нужно отсортировать массив...

Динамический массив структур в другом массиве структур
Можно ли реализовать динамический (или статический) массив структур в другом массиве структур?...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.03.2014, 16:53
Помогаю со студенческими работами здесь

Массив структур в массиве структур
Всем добрый день. Делаю менюшку для управления и терзаю Arduino IDE слегка подвис со следующей...

Сортировка Хоара в массиве структур
Не могу нормально отсортировать элементы структуры с помощью быстрой сортировки. Программа просто,...

Сортировка структур
Помогите составить программу, пожалуйста! Дана структура &quot;поезд&quot; с полями: Наименование...

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru