Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.10.2011, 12:43   #1
DorianMark
Пользователь
 
Регистрация: 30.10.2011
Сообщений: 15
По умолчанию Поиск маршрутов между городами

Мне необходимо написать программу по поиску всех возможных маршрутов между городами.

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

Покопавшись в интернете я нашел пример данной проргаммы на delphi.

не могли бы вы мне помочь с переводом delphi->pascal куска программы, который отвечает за создание и вывод готовых маршрутов.

Если я рпавильно понимаю, то вот этот кусок программы:

Код:
const

N=10;// кол-во вершин графа var

map:array[1..N,1..N]of integer; // Карта.map[i,j]ne 0,

// если точки i и j соединены

road:array[1..N]of integer; 

// Дорога - номера точек карты 

incl:array[1..N]of boolean; // incl[1]равен TRUE, если точка

// с номером i включена в road

start,finish:integer; // Начальная и конечная точки 

found:boolean; i,j:integer;

procedure step(s,f,p:integer); 

var

с:integer;// Номер точки, в которую делаем очередной шаг

i:integer; 

begin

if s=f then begin

// Точки s и f совпали !

found:=TRUE;

Labell.caption:=Labell.caption+#13+'Путь:';

for i:=l to p-1 do

Labell.caption:=Labell.caption+' '

+IntToStr(road[i]); end

else begin

// выбираем очередную точку for c:=l to N do

begin // проверяем все вершины

if(map[s,c]<> 0)and(NOT incite1)

// точка соединена с текущей и не включена в маршрут 

then begin

road[p]:=c;// добавим вершину в путь 

incl[c]:=TRUE;// пометим вершину как включенную 

step(c,f,p+l); incite]:=FALSE; road[p]:=0; 

end;

 end; 

end;

 end;// конец процедуры step

begin

Label1.caption: =' ' ;

// инициализация массивов

for i:=l to N do road[i]:=0;

for i:=l to N do incl[i]:=FALSE;

// ввод описания карты из SrtingGrid.Cells

for i:=l to N do

for j:=1 to N do

if StringGrid1.Cells[i,j] <> ''

then map[i,j]:=StrToInt(StringGridl.Cells[i, j] ; 

else map[i,j]:=0;

start:=StrToInt(Editl.text); 

finish:=StrToInt(Edit2.text);

road[l]:=start;// внесем точку в маршрут

incl[start]:=TRUE;// пометим ее как включенную

step(start,finish,2);//ищем вторую точку маршрута

// проверим, найден ли хотя бы один путь 

if not found

then Labell.caption:='Указанные точки не соединены!';

end;

end.
DorianMark вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
программа поиска маршрутов на графе Jlena Помощь студентам 0 11.05.2011 17:33
Расстояние между 2 городами Uli9 Помощь студентам 1 06.12.2008 22:40
алгоритм нахождения наилучшего маршрута между двумя заданными городами Uli9 Общие вопросы Delphi 28 18.11.2008 16:59
алгоритм нахождения наилучшего(кратчайшего) маршрута между двумя заданными городами Uli9 Помощь студентам 4 14.11.2008 15:03