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

Контейнерные классы - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Не верно работает код вычисления выражения http://www.cyberforum.ru/cpp-beginners/thread1088205.html
день добрый. Помогите пожалуйста. Вроде и логика правельна, но не работает так как надо. Условие: suma= a0*a1+a1*2...an-1*an вот мой код. #include "iostream.h" #include "windows.h" #include...
C++ public class && static class Вообщем у меня небольшая связка, которую я хотел бы использовать в программе своей, но компилятор мне выдает ошибку и я не знаю что все таки не так. Помогите разобраться. class class_1 {... http://www.cyberforum.ru/cpp-beginners/thread1088200.html
Использование шаблоных методов C++
Есть код: class A { public: static void Set( unsigned param ) { GPIOA->ODR = param; }
Обращение трех потоков к очереди C++
Помогите разобраться Три различных потока исполнения в одной программе независимо друг от друга обращаются к очереди: #include <boost/thread.hpp> #include <iostream> #include <queue> ...
C++ с массивом С http://www.cyberforum.ru/cpp-beginners/thread1088094.html
C++ Генератор пароля. Оцените его компактность и непредсказуемость Сделал за 10 минут генератор. Оцените компактность и непредсказуемость(рандомность) пароля, пожалуйста :) #include<conio.h> #include<iostream> #include<time.h> using namespace std; int main(){... подробнее

Показать сообщение отдельно
SamLokers
0 / 0 / 0
Регистрация: 07.10.2013
Сообщений: 52

Контейнерные классы - C++

03.02.2014, 12:40. Просмотров 376. Ответов 2
Метки (Все метки)

Помогите пожалуйста, очень срочно!!!!Необходимо исправить программу! Работает не коректно..

Условия:
Написать программу моделирования работы автобусного парка.
Сведения о каждом автобусе содержат: номер автобуса, фамилию и инициалы
водителя, номер маршрута.
Программа должна обеспечивать выбор с помощью меню и выполнение одной из
следующих функций:
• начальное формирование данных о всех автобусах в парке в виде списка (ввод с клавиатуры или из файла);
• имитация выезда автобуса из парка: вводится номер автобуса; программа уда*ляет данные об этом автобусе из списка автобусов, находящихся в парке, и за*писывает эти данные в список автобусов, находящихся на маршруте;
• имитация въезда автобуса в парк: вводится номер автобуса; программа удаля*ет данные об этом автобусе из списка автобусов, находящихся на маршруте, и записывает эти данные в список автобусов, находящихся в парке;
• вывод сведений об автобусах, находящихся в парке, и об автобусах, находя*щихся на маршруте.
Для представления необходимых списков использовать контейнерный класс 1i st.


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
#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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.