IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Программа поиска кратчайшего пути, Помогите с задачей, плиз
Dmitriy
сообщение 15.04.2007 1:28
Сообщение #1





Группа: Пользователи
Сообщений: 5
Пол: Мужской
Реальное имя: Dima

Репутация: -  0  +


Народ, помогите решить плиз. Имеется N городов. Некоторые из них соединены дорогами известной длины. Система дорог моделируется матрицей N*N , элемент Аi,j равен -1, если соответсвующие I и J города не соединены прямой дорогой, или числу=длине дороги в противном случае. Программа поиска кратчайшего пути между K и L городами.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Dmitriy
сообщение 3.05.2007 0:40
Сообщение #2





Группа: Пользователи
Сообщений: 5
Пол: Мужской
Реальное имя: Dima

Репутация: -  0  +


uses crt;
var w,g,s:array [1..100,1..100] of integer;
n,i,j,k,l:integer;
file1:file of integer;
Procedure Floyd;
var i,j,m:integer;
begin
for i:=1 to n do
for j:=1 to n do
begin
S[i,j]:=G[i,j];
if G[i,j]=-1 then W[i,j]:=0
else W[i,j]:=j;
end;
for i:=1 to n do
for j:=1 to n do
for m:=1 to n do
if ((i<>j) and (S[j,i]<>-1) and (i<>m) and (S[i,m]<>-1) and ((S[j,m]=-1)
or (S[j,m]>S[j,i]+S[i,m]))) then
begin
W[j,m]:=W[j,i];
S[j,m]:=S[j,i]+S[i,m];
end;
end;
Procedure ShowWay(u,v:integer);
var x:integer;
begin
x:=u;
write(x,'');
while (x<>v) do
begin
x:=W[x,v];
write('--',x);
end;
end;
begin
assign(file1,'d:\mass.txt');
reset(file1);
clrscr;
writeln('vvedite pozhaluysta kolichestvo gorodov n');
readln(n);
for i:=1 to n do
for j:=1 to n do
if i<>j then
begin
writeln('vvedite dlinu dorogi mezhdu ',i,'-im i ',j,'-im gorodami');
read(file1,G[i,j]);
end;
writeln('vvedite pozhaluysta nuzhnie goroda k i l');
readln(k,l);
if (k>n) or (l>n) then
begin
writeln('takih gorodov prosto ne suschestvuyet');
readln;
exit;
end;
floyd;
showway(k,l);
writeln(' kratchaishiy put raven= ',S[k,l]);
readln;
close(file1);
end.




Добавлено через 3 мин.
Вот и все... Спасибо Мисс Графити за помощь, программа работает читая значения длин из файла... Вот и все с курсовой... cool.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 6:45
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"