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

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

Восстановить пароль Регистрация
 
Lennadij
3 / 3 / 0
Регистрация: 08.10.2011
Сообщений: 45
27.11.2011, 16:18     Контейнерный класс map #1
Никак не могу понять как написать программу на С++, вот задание:
Написать программу моделирования работы автобусного парка.
Сведения о каждом автобусе содержат: номер автобуса, фамилию и инициалы водителя, номер маршрута.
Программа должна обеспечивать выбор с помощью меню и выполнение одной из следующих функций:
-начальное формирование данных о всех автобусах в парке в виде списка (ввод с клавиатуры или из файла);
-имитация выезда автобуса из парка: вводится номер автобуса; программа уда¬ляет данные об этом автобусе из списка автобусов, находящихся в парке, и за¬писывает эти данные в список автобусов, находящихся на маршруте;
-имитация въезда автобуса в парк: вводится номер автобуса; программа удаляет данные об этом автобусе из списка автобусов, находящихся на маршруте и записывает эти данные в список автобусов, находящихся в парке.
-Вывод сведений об автобусах, находящихся в парке и об автобусах, находящихся на маршруте

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

C++ Что такое контейнерный класс?
Реализовать контейнерный класс C++
C++ Контейнерный класс
C++ Свой контейнерный класс
C++ Контейнерный класс
Контейнерный класс, с чем есть? C++
C++ Контейнерный класс True False
Контейнерный класс Array C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lemegeton
 Аватар для lemegeton
2909 / 1338 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
27.11.2011, 19:39     Контейнерный класс map #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;
}
Yandex
Объявления
27.11.2011, 19:39     Контейнерный класс map
Ответ Создать тему
Опции темы

Текущее время: 20:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru