Нахождение пути от одного населённого пункта к другому

16081
знак
0
таблиц
0
изображений

 

Цель работы:

Разработать программу, осуществляющую нахождение пути от одного населённого пункта к другому.

 

Введение

В настоящее время индустрия производства компьютеров и программного обеспечения для них является одной из наиболее важных сфер экономики развитых стран. Ежегодно в мире продаются десятки миллионов компьютеров. Только в США объем продаж компьютеров составляет десятки миллионов долларов и постоянно продолжает расти.

В чем же причины такого стремительного роста индустрии персональных компьютеров и их сравнительная выгодность для многих деловых применений?

*            Простота использования, обеспеченная с помощью диалогового способа взаимодействия с компьютером.

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

Использованная в отчёте программа может использоваться для решения задач, связанных с проложением маршрута дороги любого типа.


Определение достижимости населённых пунктов.

 

1.1 Анализ требований.

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

Решение поставленной задачи осуществляется следующим методом:

Cтроится граф, вершины которого - населённые пункты, а ребра - дороги между ними.

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

Для организации данного алгоритма используется две процедуры: процедура нахождения всего пути и рекурсивная процедура поиска единичного маршрута.

Процедура нахождения всего пути осуществляет перебор всех населённых пунктов и вызов рекурсивной процедуры, которая осуществляет поиск маршрута между этими населёнными пунктами.

Средства решения задачи: используются средства логического программирования языка Turbo Pascal 7.0.

1.2 Проектирование.

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

*     Ввод данных пользователем с клавиатуры - вводятся названия населённых пунктов и дороги, соединяющие их;

*     Вывод данных - вывод на экран списка населённых пунктов и дорог, соединяющий их.

*     Запись в файл - запись в файл, имя которого указывает пользователь в диалоговом режиме, названия населённых пунктов и существующих дорог между ними в виде текстовой информации;

*     Считывание файла с диска, с именем, которое указывает пользователь в диалоговом режиме

*     Вывод результата - пользователь задаёт начальный и конечный населённый пункт, между которыми необходимо проложить путь, на экране появляется маршрут, либо сообщение: "маршрут не найден".

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

Все процедуры, используемые данной программой, находятся в unit-модуле ph.tpu и предназначены для использования основной программой, которая находится в файле path.pas.

Основная программа осуществляет вывод меню на экран, опрос клавиатуры и вызов процедуры, соответствующей нажатой клавише.

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

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

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

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

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

Для поиска маршрута используется рекурсивная процедура findnext, которой при её вызове передаются следующие параметры:

a(vec) - вектор, каждому городу соответствует номер в маршруте или ноль, если города нет в маршруте;

tv(integer) - город, следующий в маршруте;

nv(integer) - город, в который необходимо добраться;

lv(integer) - количество пройденных городов.

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


Информация о работе «Нахождение пути от одного населённого пункта к другому»
Раздел: Информатика, программирование
Количество знаков с пробелами: 16081
Количество таблиц: 0
Количество изображений: 0

Похожие работы

Скачать
45230
0
0

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

Скачать
50518
4
3

... им вклада. ООО "Рапира" имеет организационную структуру, установленную внутренними распорядительным документами Общества (рис. 4). Рис. 4. Организационная структура ООО "Рапира"   2.2 Аналитический и синтетический учет расчетов с поставщиками и заготовителями в ООО "Рапира" В плане счетов, используемым ООО "Рапира" счет 62 "Расчеты с покупателями и заказчиками" предназначен для обобщения ...

Скачать
26389
0
0

... и вносящую достойный вклад в дело обеспечения правопорядка и борьбы с преступностью. В приказной части определено: «Считать 10 декабря 1949 г. Днем создания службы связи в Министерстве внутренних дел». 2. Средства и сети проводной телеграфной связи Словарь русского языка трактует термин «сеть» как что-либо, напоминающее своим внешним видом множество скрещенных, переплетённых линий, нитей ...

Скачать
132150
0
0

... Об этом свидетельствует и мировой опыт. Первая группа проблем - это совершенствование понятийного аппарата. Известно, насколько некорректны определения понятий, данные в действующем Законе “Об основах налоговой системы Российской Федерации”. В статье 2 этого закона таким разным понятиям как налог, сбор, пошлина, другой платеж дается одно общее определение, что противоречит правилам элементарной ...

0 комментариев


Наверх