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

map - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Задача.Магический квадрат. http://www.cyberforum.ru/cpp-beginners/thread384594.html
Хочу решить задачу. http://atpp.vstu.edu.ru/cgi-bin/arh_problems.pl?id_prb=994. Подскажите по какому принципу действовать? С чего вообще начать?
C++ double функции в библиотеке math.h Коллеги, помогите, пожалуйста, разобраться в следующей проблеме. См. прикрепленный файл. Почему функции из библиотеки math.h не принимают целый тип? Обязательно нужно преобразовывать к... http://www.cyberforum.ru/cpp-beginners/thread384585.html
удалить слово из строки C++
Доброго времени суток ! Задача: ввести строку и слово, если в строке встречается это слово, удалить из строки его и вывести строку. код нужен на С (если не трудно, то с комментариями). можно...
Система исчисления) C++
Ребята, кто-то знает, как написать программу, которая делает операцию сложения в восьмеричной системе исчисления?? и подносит в квадрат числа от 0 до 7..) Помогите, плиз)
C++ Вопрос про удаление символа с определенной позиции в строке http://www.cyberforum.ru/cpp-beginners/thread384566.html
Дано задание по многопоточным потокам в си. Есть разделяемая переменная F типа str, если нажата клавиша от 1 до 9, то происходит стирание символа в позиции N, а если нажата alt+(от 1 до 9), то...
C++ Даны положительные x, y, z. Выяснить, существует ли треугольник Даны положительные x, y, z. Выяснить, существует ли треугольник с длинами сторон х, у, z. Ответ получить в текстовой форме: "существует" или "не существует". подробнее

Показать сообщение отдельно
мариш<3
1 / 1 / 0
Регистрация: 07.12.2010
Сообщений: 10

map - C++

15.11.2011, 19:07. Просмотров 814. Ответов 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;
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru