Читать курсовая по математике: "Структуры данных и алгоритмы" Страница 3

назад (Назад)скачать (Cкачать работу)

Функция "чтения" служит для ознакомления с работой. Разметка, таблицы и картинки документа могут отображаться неверно или не в полном объёме!

допустимых маршрутов. Представляет из себя однонаправленный список, в каждом элементе которого кроме ссылки на следующий имеется поле типа маршрут (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;


Интересная статья: Быстрое написание курсовой работы