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

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

Войти
Регистрация
Восстановить пароль
 
Lennadij
3 / 3 / 0
Регистрация: 08.10.2011
Сообщений: 45
#1

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

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

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

Решить задачу, использую для представления данных контейнерный класс map, в качестве ключа использовать «номер автобуса». Предусмотреть вывод сведений об автобусах производить в порядке возрастания номеров автобусов и в порядке возрастания номеров маршрутов.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.11.2011, 16:18
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Контейнерный класс map (C++):

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

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

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

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

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
lemegeton
2923 / 1352 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
27.11.2011, 19:39 #2
Менюшки и ввод-вывод уж как-нибудь самостоятельно.
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;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.11.2011, 19:39
Привет! Вот еще темы с ответами:

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

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

Контейнерный класс, с чем есть? - C++
Парни, всем привет! Вот сижу с домашкой... Нужно сделать контейнерный класс для двух классов (книга и библиотека) на основе массива......

Реализовать контейнерный класс в соответствии с вариантом задания - C++
Доброго времени суток всем.у меня огромные проблемы нужно написать программу в С++ а я не умею... прошу вас помогите люди добрые. ...


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

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

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