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

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

Войти
Регистрация
Восстановить пароль
 
stalker033
0 / 0 / 0
Регистрация: 02.03.2014
Сообщений: 11
#1

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

02.03.2014, 16:53. Просмотров 147. Ответов 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;
    }}}}}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.03.2014, 16:53     Сортировка в массиве структур
Посмотрите здесь:

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

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

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

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