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

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

Войти
Регистрация
Восстановить пароль
 
мариш<3
1 / 1 / 0
Регистрация: 07.12.2010
Сообщений: 10
#1

map - C++

15.11.2011, 19:07. Просмотров 791. Ответов 0
Метки нет (Все метки)

Помогите... маюсь маюсь... никак не могу сообразить как реализовать 5 и 6 действие (Предусмотреть вывод сведений об автобусах производить в порядке возрастания номеров автобусов и
в порядке возрастания номеров маршрутов.)!!! Вообще в принципе не могу понять как сортировку сделать здесь((((
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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
/* Написать программу моделирования работы автобусного парка.
 
Сведения о каждом автобусе содержат: номер автобуса, фамилию и инициалы водителя, номер маршрута.
 
Программа должна обеспечивать выбор с помощью меню и выполнение одной из следующих функций:
 
* начальное формирование данных о всех автобусах в парке в виде списка (ввод с клавиатуры или из файла);
 
* имитация выезда автобуса из парка: вводится номер автобуса; программа удаляет данные об этом автобусе из списка автобусов, находящихся в парке, и записывает эти данные в список автобусов, находящихся на маршруте;
 
* имитация въезда автобуса в парк: вводится номер автобуса; программа удаляет данные об этом автобусе из списка автобусов, находящихся на маршруте и записывает эти данные в список автобусов, находящихся в парке.
 
* Вывод сведений об автобусах, находящихся в парке и об автобусах, находящихся на маршруте
 
 
2. Решить задачу 1, использую для представления данных контейнерный класс map, в качестве ключа использовать «номер автобуса». 
Предусмотреть вывод сведений об автобусах производить в порядке возрастания номеров автобусов и
в порядке возрастания номеров маршрутов.*/
#include <iostream>
#include <string>
#include <map>
#include <locale> // для вывода русских букв
using namespace std;
class Access
{
    struct Bus
    { // Aвтобус
        string name; // фамилию и инициалы водителя;
        size_t num; // size_t - базовый беззнаковый целочисленный тип языка
    };
public:
    typedef map<size_t,Bus> Array;
    typedef map<size_t,Bus>::iterator Iter;
    Array array;         // массив автобусов map<Bus>
    wstring name;        // слово - маршрут, или парк
    Access( wstring str ): name( str ){};
    void ReadConsole( size_t size=1 );              // процедура чтения с консоли данных об автобусах
    friend ostream & operator <<( ostream & out, Access & ac ); // вывод всех авто. в поток ( консоль )
    bool Remove( Access & ac, size_t key );         // перемещение автобусов из массива в другой массив
    void Sort (); // Сортировка
};
 
 
 
void Access::ReadConsole( size_t size )// процедура чтения с консоли данных об автобусах
{
    if( size == 0 ) return;
    Bus bus;
    wcout << L"Введите данные об автобусах которые будут находиться в " << name << L"\n";
    for( ; size != 0; size-- )
    {
        wcout << L"\nНомер маршрута  ";
        cin >> bus.num;
        wcout << L"Фамилию и инициалы водителя  ";
        cin.sync();
        getline( cin ,bus.name );
        wcout << L"Номер автобуса  ";
        size_t num;
        cin >> num;
        array.insert( make_pair( num, bus )); // дабавление автобуса в массив
    }
}
ostream & operator <<( ostream & out, Access & ac )// вывод всех авто. в поток ( консоль )
{
    if( ac.array.empty())
        wcout << L"\nАвтобусов в " << ac.name << L" нет ни одного\n\n";
    else
    {
        wcout << L"\nАвтобусы в " << ac.name << ":\n\n";
        for( Access::Iter ptr = ac.array.begin(); ptr != ac.array.end(); ++ptr )
            {
                wcout << L"Номер маршрута > ";
                cout << ptr->second.num << "\n";
                wcout << L"Фамилию и инициалы водителя > ";
                cout << ptr->second.name << "\n";
                wcout << L"Номер автобуса > ";
                cout << ptr->first << "\n\n";
           }
    }
    return out;
}
 
bool Access::Remove( Access & ac, size_t key )//перемещение автобусов из массива в другой массив
{
    Iter ptr = array.find( key ); // поиск номера автобуса 
    if( ptr == array.end()) return false; // если не нашли такого номера возвращаем 0
    ac.array.insert(make_pair( ptr->first, ptr->second ));
    array.erase( ptr );
    return true;
}
/////////////// main ///////////////////
int main(int argc, char *argv[])
{    
    setlocale (0,"Rus");
    
    Access BusPark(L"автобусном парке");
    Access Route(L"маршруте");
    bool f=0;
    while (f!=1)
    {
        cout<<"1. начальное формирование данных\n";
        cout<<"2. имитация выезда автобуса из парка\n";
        cout<<"3. имитация въезда автобуса в парк\n";
        cout<<"4. Вывод сведений об автобусах, находящихся в парке и об автобусах, находящихся на маршруте\n";
        cout<<"5. вывод сведений об автобусах в порядке возрастания номеров автобусов\n";
        cout<<"6. вывод сведений об автобусах в порядке возрастания номеров маршрутов\n";
        cout<<"7. Выход\n";
        int c;
        cin>>c;
        switch(c)
        {
        case 1:
            {
                 BusPark.ReadConsole(3); // 3 авто. ( введи 1 авто. с №123 )
    cout << "\n\n_____________________________________________\n";
            break;
            }
        case 2:
            {
                 if(BusPark.Remove( Route, 123 )) // "выводим" №33 автобус на маршрут
        wcout << L"\n\n\nВыводим автобус с №123 в маршрут\n\n";
    else  wcout << L"\n\n\nАвтобуса с номером 123 нет в авто-парке\n\n";
                break;
            }
        case 3:
            {
                 wcout << L"\n\n\nОбратно №ё123 в парк, если такой был...\n\n";
    Route.Remove( BusPark, 123 ); // обратно №123 в парк
    cout << BusPark; // какие автобусы в автобусном парке 
    cout << Route; // какие на маршруте 
                break;
            }
        case 4:
            {
                 cout << BusPark; // какие автобусы в автобусном парке 
    cout << Route; // какие на маршруте 
    cout << "\n\n_____________________________________________\n";
                break;
            }
        case 5:
            {
 
            }
        case 6:
            {
 
            }
 
        case 7:
            {
                f=1;break;
            }
        default:cout<<"Не верный ввод! Попробуйте еще раз.\n";
        }
   }
    cin.sync();
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.11.2011, 19:07     map
Посмотрите здесь:

map<> в C, не в C++! - C++
всем привет! обращаюсь как Вам, так как не могу найти ответ в инете. если локанично: нужен map в C. в C++ уже есть класс и...

Трабл с map - C++
Доброго времени суток В input.txt лежат названия поездов, время их отправления и прибытия. Расстояние - константа. Нужно вывести самый...

Работа с map - C++
Нужно записать в map указатели на объекты производных классов. Пробую сделать так std::map &lt;int, Figure*&gt; myMap = { { 1, new Square() }, ...

Сортировка map - C++
Здрасьте. Есть map (я с ним ещё плохо знаком) map &lt;string, list&lt;string&gt; &gt; data; задача - отсортировать списки в нём (методом sort()). ...

STL map - C++
Вопрос:как мне узнать что не создавался map с заданым str? #include &lt;iostream&gt; #inlclude &lt;map&gt; #include &lt;string&gt; using namespace...

вопрос по map - C++
//если я напишу map&lt;string,vector&lt;int&gt; &gt; lol; string s; //то например: lol; // уже будет вектором считаться?

Map. operator[] - C++
#include &lt;iostream&gt; #include &lt;string&gt; #include &lt;map&gt; #include &lt;fstream&gt; using namespace std; int main() { ...

Map out of range - C++
map &lt;pair&lt;int,int&gt;,map&lt;pair&lt;int,int&gt; ,bool&gt; &gt; use_arcs; int a=atoi(argv); for(int i=0; i&lt;a*1000000;i++) { ...

STL :: map - C++
Столкнулся с такой проблемой: Нужно вставить в отсортированную map-таблицу элемент. Использую: myMap.insert(myIterator,pair&lt;type1,...

Не компилируется map - C++
Здравствуйте. Значит, компилирую проект. Компилируется. Добавляю в члены класса такую строку: map&lt;int, int&gt; maps; Все, не...

bind + map - C++
Вопрос, почему это не работает? Вроде же все правильно вызывается.int main() { using map_t = std::map&lt;std::string, int&gt;; map_t...

Двумерный MAP - C++
Собственно, пытаюсь создать конструкцию типа: #include &lt;map&gt; using namespace std; int main() { map&lt;int, map&lt;int, int&gt;&gt; MainMap;...


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

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

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