допустимых маршрутов. Представляет из себя однонаправленный список, в каждом элементе которого кроме ссылки на следующий имеется поле типа маршрут (Link), общее время пути, общая максимальная и минимальная цена, количество пересадок. Типы полей и обоснование обсуждались выше.
Внешнее представление:
Транспортная система хранится во внешнем текстовом файле. Файл может быть создан любым текстовым редактором. В файле указывается следующее:
Количество городов. Со следующей строки начинается информация о городах: название города, на следующей строчке координаты. После всех городов начинается информация о рейсах: компания, номер, тип, классы, количество станций; номер города, время пути, время стоянки цена по классам, для каждого города; время отправления от начальной станции.
Так как эта информация редактируется крайне редко, причем разработчиком сети, то такой способ является наиболее приемлемым.
Название городов вводятся как строки, дата – в любом формате (дд-мм-гг, дд-мм-гггг, дд-мес-гг и т.п.) время чч:мм. По умолчанию полагается дата – текущий день, время 0:00.
Максимальное время пути, максимальное число пересадок, максимальная цена – вводятся как числа.
Алгоритм
Begin
{Загрузка транспортной схемы};
{Ввод исходных данных и заполнение шаблона};
{Вызов процедуры поиска с введенным шаблоном, построенная часть маршрута - пустая};
{Вывод полученного множества маршрутов}
End
{Процедура поиска маршрута с данным шаблоном и уже построенной частью маршрута}
Begin
While {просмотрены не все рейсы} do begin
If {соответствует тип транспорта} and {Текущий рейс не равен предыдущему}then
Begin
If {город отправления присутствует в рейсе, причем раньше конечной станции} then begin
{Рассчитать время отправления ближайшего следующего рейса}
Repeat
{Перейти к следующему городу};
{Рассчитать время дороги с учетом нового участка}
If {текущий город еще не проезжали} and {время пути не превышает максимального}
and {количество пересадок не превышает максимального} and {не приехали1}
then {Добавить к маршруту проеханный участок. Вызвать процедуру поиска маршрута
от текущего города до конечного с новыми значениями времени}
Until {текущий город проезжали} or {время исчерпано} or {приехали} or {конец рейса};
If {приехали} and {время не превышено} and {минимальная цена рейса не выше
допустимой} then {Добавить построенный маршрут в мно-во ответов на нужное место}
end;
end;
{Перейти к следующему рейсу}
end;
end
Текст программы на языке Pascal
uses Crt, Date, Graph;
Const MaxCity=100; MClass=6;
Type
CityCode=1..maxcity;{Внутрений код города}
Week=0..10079;{Тип время в минутак с 0:00 понедельника}
DayTable=^IDayTable; {Таблица отправлений от начальной станции}
IDayTable=record
Time:Week;
Next:DayTable;
end;
WayKind=1..4;{Тип пути (аэро, море, ж.д, авто)}
WayClass=1..MClass;{Класс или тип перевозки}
Cities=array[CityCode] of{Названия и координаты городов}
record
name:string[20];
x,y:word;
end;
mcost=array[wayclass] of longint; {Таблица стоимости по классам}
Way=record
City:Citycode;
Delay,Reboard:Word;
Cost:mcost;
end;
WayP=^way;
PWay=^Way1;{Информация о городах следования рейса}
Way1=record
Way:array [1..4] of way;
next:PWay;
end;
wclass=array [WayClass] of boolean;
PFlight=^Flight;
Flight=record{Информация о рейсе}
company:string[20];
number:string[10];
totalstation:CityCode;
Похожие работы
Тема: Структуры данных и алгоритмы |
Предмет/Тип: Математика (Курсовая работа (т)) |
Тема: Структуры данных и алгоритмы |
Предмет/Тип: Информатика, ВТ, телекоммуникации (Курсовая работа (п)) |
Тема: Структуры и алгоритмы обработки данных |
Предмет/Тип: Отсутствует (Контрольная работа) |
Тема: Структуры и алгоритмы обработки данных |
Предмет/Тип: Другое (Контрольная работа) |
Тема: Структуры и алгоритмы обработки данных |
Предмет/Тип: Информатика, ВТ, телекоммуникации (Практическое задание) |
Интересная статья: Быстрое написание курсовой работы