Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
3 / 3 / 1
Регистрация: 08.10.2011
Сообщений: 45
1

Контейнерный класс map

27.11.2011, 16:18. Показов 2374. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Никак не могу понять как написать программу на С++, вот задание:
Написать программу моделирования работы автобусного парка.
Сведения о каждом автобусе содержат: номер автобуса, фамилию и инициалы водителя, номер маршрута.
Программа должна обеспечивать выбор с помощью меню и выполнение одной из следующих функций:
-начальное формирование данных о всех автобусах в парке в виде списка (ввод с клавиатуры или из файла);
-имитация выезда автобуса из парка: вводится номер автобуса; программа уда¬ляет данные об этом автобусе из списка автобусов, находящихся в парке, и за¬писывает эти данные в список автобусов, находящихся на маршруте;
-имитация въезда автобуса в парк: вводится номер автобуса; программа удаляет данные об этом автобусе из списка автобусов, находящихся на маршруте и записывает эти данные в список автобусов, находящихся в парке.
-Вывод сведений об автобусах, находящихся в парке и об автобусах, находящихся на маршруте

Решить задачу, использую для представления данных контейнерный класс map, в качестве ключа использовать «номер автобуса». Предусмотреть вывод сведений об автобусах производить в порядке возрастания номеров автобусов и в порядке возрастания номеров маршрутов.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.11.2011, 16:18
Ответы с готовыми решениями:

Контейнерный класс
1)Создать класс“Турагенство”, состоящей из класса ”Тур”. 2)Класс “Турагенство ”:название...

Контейнерный класс
В общем нужно реализовать контейнерный класс не использую STL библиотеку, я не уверен правильно ли...

Реализовать контейнерный класс
помоги пожалуйста с задачей за вознаграждение) Задание: Реализовать контейнерный класс в...

Свой контейнерный класс
Господа, помогите пожалуйста написать прогу. сама вообще не справляюсь: шаблоны и контейнеры...

1
4773 / 2582 / 894
Регистрация: 29.11.2010
Сообщений: 5,591
27.11.2011, 19:39 2
Лучший ответ Сообщение было отмечено Lennadij как решение

Решение

Менюшки и ввод-вывод уж как-нибудь самостоятельно.
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
#include <iostream>
#include <map>
#include <vector>
#include <utility>
#include <string>
#include <iterator>
#include <algorithm>
 
struct Bus {
  size_t number;
  std::string driver;
  size_t route;
  Bus() : number(0), driver(""), route(0) {}
  Bus(size_t number_, const std::string &driver_, size_t route_)
    : number(number_), driver(driver_), route(route_) {}
  friend std::ostream &operator<<(std::ostream &stream, const Bus &bus) {
    return stream << "Bus #" << bus.number << ", driver: " << bus.driver <<
      ", route: " << bus.route << ".";
  }
};
 
class Buses {
 public:
  typedef std::map<size_t, Bus> BusMap;
  Buses() : buses() {}
  void add(const Bus &bus) {
    buses[bus.number] = bus;
  }
  size_t size() const {
    return buses.size();
  }
  template <class Compare>
  std::vector<Bus> asVector(Compare compare) {
    std::vector<Bus> result;
    for (BusMap::iterator i = buses.begin(); i != buses.end(); ++i)
      result.push_back(i->second);
    std::sort(result.begin(), result.end(), compare);
    return result;
  }
  const Bus &operator[](size_t number) {
    return buses[number];
  }
  const Bus &get(size_t number) {
    return buses[number];
  }
  size_t erase(size_t number) {
    return buses.erase(number);
  }
  void moveTo(Buses &destination, size_t number) {
    destination.add(get(number));
    erase(number);
  }
  static bool compareByNumber(const Bus &a, const Bus &b) {
    return a.number < b.number;
  }
  static bool compareByRoute(const Bus &a, const Bus &b) {
    return a.route < b.route;
  }
 private:
  BusMap buses;
};
 
std::ostream &operator<<(std::ostream &stream, const std::vector<Bus> buses) {
  std::copy(buses.begin(), buses.end(), std::ostream_iterator<Bus>(stream, "\n"));
  return stream;
}
 
int main(int argc, char *argv[]) {
  Buses inPark, onRoute;
 
  // добавление автобусов
  inPark.add(Bus(102, "A.B. Ivanov", 102));
  inPark.add(Bus(309, "C.D. Petrov", 309));
  inPark.add(Bus(23, "E.F. Sidorov", 207));
  inPark.add(Bus(27, "E.F. Sidorov", 107));
 
  // вывод
  std::cout << "In park:" << std::endl <<
    // автобусов в парке (отсортированных по номеру)
    inPark.asVector(Buses::compareByNumber) <<
    "On route:" << std::endl <<
  // и на маршруте (отсторированных по маршруту
    onRoute.asVector(Buses::compareByRoute) <<
    "========================================================" << std::endl;
 
  // из парка на маршрут
  inPark.moveTo(onRoute, 23);
  inPark.moveTo(onRoute, 102);
  inPark.moveTo(onRoute, 27);
 
  // вывод
  std::cout << "In park:" << std::endl << inPark.asVector(Buses::compareByNumber) <<
    "On route:" << std::endl << onRoute.asVector(Buses::compareByRoute) <<
    "========================================================" << std::endl;
 
  // из маршрута в парк
  onRoute.moveTo(inPark, 23);
  onRoute.moveTo(inPark, 27);
 
  // вывод
  std::cout << "In park:" << std::endl << inPark.asVector(Buses::compareByNumber) <<
    "On route:" << std::endl << onRoute.asVector(Buses::compareByRoute) <<
    "========================================================" << std::endl;
}
2
27.11.2011, 19:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.11.2011, 19:39
Помогаю со студенческими работами здесь

Контейнерный класс Array
Создайте класс Array с двумя полями: указатель на массив целых чисел и размер массива. В классе...

Контейнерный класс Queue
Создать абстрактный базовый класс с виртуальной функцией - сумма прогрессии. Создать производные...

Контейнерный класс True False
Ребят глюк какой то функция getNumber, не работает хотя работает но не правильно для логического...

Что такое контейнерный класс?
Если можно примерчик приведите. Спасибо.


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru