Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- struct Bus
- {
- int num;
- string fio;
- int routeNum;
- bool isOnRoute;
- Bus* next;
- Bus(int n, string f, int r, bool i) : num(n), fio(f), routeNum(r), isOnRoute(i), next(nullptr) {}
- void print()
- {
- cout << "Номер автобуса: " << num << "; ";
- cout << "ФИО водителя: " << fio << "; ";
- cout << "Номер маршрута: " << routeNum << "; ";
- if (isOnRoute)
- cout << " выполняет маршрут ";
- else
- cout << " стоит в автопарке ";
- cout << endl;
- }
- };
- class BusesList
- {
- public:
- Bus* buses;
- BusesList() { buses = nullptr; };
- void add(int n, string f, int r, bool i)
- {
- Bus* tempBus = new Bus(n, f, r, i);
- if (buses == nullptr)
- {
- buses = tempBus;
- return;
- }
- auto temp = buses;
- while (temp->next != nullptr)
- {
- temp = temp->next;
- }
- temp->next = tempBus;
- }
- void print()
- {
- auto temp = buses;
- while (temp != nullptr)
- {
- temp->print();
- temp = temp->next;
- }
- delete temp;
- }
- Bus* find(int num)
- {
- Bus* temp = buses;
- if (temp->num == num)
- {
- return temp;
- }
- temp = temp->next;
- while (temp->next != nullptr)
- {
- if (temp->num == num)
- {
- return temp;
- }
- temp = temp->next;
- }
- return NULL;
- }
- void deleteBus(int n)
- {
- if (buses->num == n)
- {
- buses = buses->next;
- return;
- }
- auto prev = buses;
- auto temp = buses->next;
- while (temp != nullptr)
- {
- if (temp->num == n)
- {
- prev->next = temp->next;
- return;
- }
- temp = temp->next;
- prev = prev->next;
- }
- }
- };
- void endOfService(BusesList*& park, BusesList*& route, int n)
- {
- auto temp = route->find(n);
- if (temp == NULL)
- {
- cout << "Не найдено автобусов на маршруте с таким номером." << endl;
- return;
- }
- route->deleteBus(n);
- park->add(temp->num, temp->fio, temp->routeNum, true);
- cout << "Успешно!" << endl;
- }
- //начальное формирование списка данных обо всех автобусах в парке
- void fillFromKeyboark(BusesList*& park, BusesList*& route)
- {
- int n;
- string f;
- int r;
- bool i;
- cin >> n >> f >> r >> i;
- if (i)
- route->add(n, f, r, i);
- else
- park->add(n, f, r, i);
- }
- //вывести все автобусы
- void printAll(BusesList* park, BusesList* route)
- {
- route->print();
- park->print();
- }
- //меню
- void menu(BusesList*& park, BusesList*& route)
- {
- cout << endl << "************" << endl;
- cout << "Чтобы просмотреть автобусы в пути, введите 1" << endl;
- cout << "Чтобы просмотреть автобусы в парке, введите 2" << endl;
- cout << "Чтобы ввести автобус, который заехал в парк, введите 3" << endl;
- cout << "Чтобы вывести все автобусы, введите 4" << endl;
- char pick;
- cin >> pick;
- switch (pick)
- {
- case '1':
- cout << "Автобусы в пути:" << endl;
- route->print();
- break;
- case '2':
- cout << "Автобусы в парке:" << endl;
- park->print();
- break;
- case '3':
- cout << "Введите номер автобуса, который въехал в автопарк: ";
- int num;
- cin >> num;
- endOfService(park, route, num);
- break;
- case '4':
- printAll(park, route);
- break;
- default:
- cout << "Вы ввели что-то не то" << endl;
- break;
- }
- }
- int main()
- {
- setlocale(0, "rus");
- const int N = 3;
- BusesList* park = new BusesList; //Список в парке
- BusesList* route = new BusesList; //Список на маршруте
- cout << "Введите " << N << " автобусов с клавиатуры в виде: <номер автобуса> <фио> <номер маршрута> <на маршуте>" << endl;
- cout << "|____<на маршруте> 0 или 1, где 0 - в парке, 1 - на маршруте" << endl;
- /* ДЛЯ ТЕСТА
- park->add(0, "Исрапов И.В.", 108, false);
- park->add(1, "Истамбулов П.К.", 11, false);
- route->add(2, "Кеков П.К.", 91, true);
- route->add(3, "Буков И.В.", 78, true);
- route->add(4, "Лолов П.К.", 61, true);
- route->add(5, "Ыров П.К.", 31, true);
- */
- for (int count = 0; count < N; count++) fillFromKeyboark(park, route);
- while (true)
- {
- menu(park, route);
- }
- }
Add Comment
Please, Sign In to add comment