Скачиваний:
10
Добавлен:
01.05.2014
Размер:
120.32 Кб
Скачать

Задание.

Информационная система железнодорожной сети. Некоторая железнодорожная компания обслуживает n станций. Клиент набирает название своей станции и станции назначения, и ему должна выдаться схема расписаний поездов с минимальным общим временем поездки. Если клиент указывает сумму денег, которой он хотел бы ограничиться, решается та же задача, но с учетом финансовых возможностей клиента.

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

Анализ задачи.

Железнодорожную сеть можно представить в виде графа. Станциям соответствуют вершины графа, отрезкам дороги между станциями – ребра. Предполагается, что если есть прямой маршрут из А в Б, то существует также и прямой маршрут из Б в А. Из данного предположения следует, что граф железнодорожной сети является ненаправленным.

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

Участок дороги между соседними станциями далее будем называть ребром.

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

Структура графа.

Граф (Graph) состоит из массива вершин (Vertices[1..n]), каждая из которых характеризуется именем (Name) и указателем на список смежности, а также служебным полем (VertexLabel), необходимым для реализации алгоритма поиска кратчайшего пути. Также хранится число вершин в графе (Number).

Элемент списка смежности представляет собой запись, состоящую из следующих полей: индекс смежной вершины (Where), указателем на таблицу расписания ветви (TimeTable) и указателем на следующий элемент списка смежности (NextStation).

Таблица расписания ветви представляет собой список из элементов следующей структуры: время отправления со станции под номером i(DepTime), время прибытия на станцию под номеромwhere(ArrTime), стоимостью билета (Price), указатель на следующую строку в таблице расписания (Next).

Время отправления и прибытия хранится в минутах, но отображается в удобном для пользователя формате ЧЧ:ММ.

Ограничения на исходные данные.

  1. Число станций ограничено двадцатью.

  2. Название станции – строка не более 25 символов.

  3. Таблица расписания не более 10 строк.

  4. Стоимость билета ограничена диапазоном целых чисел (0..65000).

  5. Время обязательно вводить в форме ЧЧ:ММ, причем числа должны быть дополнены, если необходимо, нулем слева до 2-х символов (например 02:10)

Ограничения 1)-3) нужны для упрощения редактирования данных внутри программы. Большие значения потребовали бы организации прокручивающихся списков, грамотная реализация которых составляет отдельную задачу. Эти ограничения связаны только со сложностью визуального оформления данных и не влияют на сущность программы.

Соседние файлы в папке Информационная система железнодорожной сети