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

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

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

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

03.02.2014, 12:40. Просмотров 364. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.02.2014, 12:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Контейнерные классы (C++):

Контейнерные классы C++. - C++
Здраствуйте:)Поскажите пожалуйста по нижеприведенному коду, сама не могу разобраться, хотя смотрела в учебниках и по инету не могу найти...

Контейнерные классы - C++
Добрый вечер! Получил задание на редактирование параграфов из файла. Решил делать через контейнер вида map. Все считывается и выводится,...

Контейнерные классы - C++
Есть некоторое сомнения, помоготи пожалуйста: Если у меня есть например такой код: vector&lt;int&gt; * pmyvec; pmyvec-&gt;push_back(3); ...

Контейнерные классы - C++
Собственно что это?:) Если можно, скиньте ссылку, где есть примеры на visual C++ на русском. Спасибо

контейнерные классы - C++
выводит ошибку, как исправить 1&gt;22.cpp(41): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не...

Последовательные контейнерные классы - C++
Составить программу, используя последовательные классы стандартной библиотеки шаблонов С++, которая содержит текущую информацию о заявках...

2
Kuzia domovenok
1892 / 1747 / 119
Регистрация: 25.03.2012
Сообщений: 5,936
Записей в блоге: 1
03.02.2014, 13:34 #2
В чём именно некорректность? Неохота читать многабукф, если ты не хочешь указать в чём Именно ошибка.
0
SamLokers
0 / 0 / 0
Регистрация: 07.10.2013
Сообщений: 52
06.02.2014, 18:19  [ТС] #3
Kuzia domovenok, Работает только начальное формирование данных( ввод : номер автобуса, фамилию и инициалы водителя, номер маршрута. ), остальные условия не правильно работают.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.02.2014, 18:19
Привет! Вот еще темы с ответами:

Контейнерные классы: стек и очередь - C++
Создать класс“Сотрудник”, состоящей из класса ”Зарплата”. Класс “Сотрудник ”: фамилия сотрудника, должность. Класс “Зарплата ”: зарплата за...

Библиотека потокового ввода-вывода и контейнерные классы.Дешифровка - C++
Задание:Создать функцию, которая расшифровывает зашифрованный файл на основании файла- ключа. Функция принимает в качестве параметров...

Абстрактные контейнерные типы ? - C++
Есть три типа контейнеров – вектор (vector) и список (list). (Третий последовательный контейнер – двусторонняя очередь (deque а третий он...

Непонятна тема (Классы содержащие другие классы, как данные члены ) - C++
Изучаю книгу Джесс Либерти(в частности эту главу в данный момент) #include &lt;iostream&gt; class Point { public: void SetX(int...


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

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

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