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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.03.2012, 16:44   #1
-snt
 
Регистрация: 26.01.2012
Сообщений: 4
Печаль Минимальное остовное дерево PASCAL

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

Код:
Program D;
uses crt;
var
a:array[1..100,1..100] of integer;
posetil,q:array[1..105] of integer;
ps,pe,k,i,j,x,min,max,n:longint;
Procedure Derevalgor;
begin
ps:=1;
pe:=1;
max:=0;
k:=random(n);
posetil[k]:=1;
q[ps]:=k;
for i:=1 to n do
for j:=1 to n do
begin
if (a[i,j]>max) then begin
max:=a[i,j];
end;
end;
inc(max);
while ps<n do begin
min:=max;
for i:=1 to n do
if (a[k,i]<>0) and (posetil[i]<>1) and (a[k,i]<min) then begin
min:=a[k,i];
x:=i;
end;
inc(pe);
q[pe]:=x;
posetil[x]:=1;
inc(ps);
k:=q[ps];
end;
q[n]:=q[1];
end;
begin
clrscr;
write('Vvedite kol-vo gorodov:');
readln(n);
for i:=1 to n do
for j:=1 to n do
begin
write('Vvedite rasstoyanie v ycheiku (a[',i,',',j,']=)');
readln(a[i,j]);
a[j,i]:=a[i,j];
end;
end;
for i:=1 to n do
begin
for j:=1 to n do
write(a[i,j]:4);
writeln;
end;
readln;
Derevalgor;
writeln('put po derevynnomu algoritmu:');
for i:=1 to n do
write(q[i]:4);
writeln;
readln;
end.

Последний раз редактировалось ACE Valery; 17.03.2012 в 17:42.
-snt вне форума Ответить с цитированием
Старый 17.03.2012, 17:22   #2
-snt
 
Регистрация: 26.01.2012
Сообщений: 4
По умолчанию

ошибку нашёл)


Код:
Program D;
uses crt;
var
a:array[1..100,1..100] of integer;
posetil,q:array[1..105] of integer;
ps,pe,k,i,j,x,min,max,n,z:longint;
Procedure Derevalgor;
begin
ps:=1;
pe:=1;
max:=0;
k:=z;
posetil[k]:=1;
q[ps]:=k;
for i:=1 to n do
for j:=1 to n do
begin
if (a[i,j]>max) then begin
max:=a[i,j];
end;
end;
inc(max);
while ps<n do begin
min:=max;
for i:=1 to n do
if (a[k,i]<>0) and (posetil[i]<>1) and (a[k,i]<min) then begin
min:=a[k,i];
x:=i;
end;
inc(pe);
q[pe]:=x;
posetil[x]:=1;
inc(ps);
k:=q[ps];
end;
q[n]:=q[1];
end;
begin
clrscr;
write('Vvedite kol-vo gorodov:');
readln(n);
write('Vvedite gorod s kotorogo sleduet nachat');
readln(z);
for i:=1 to n do
for j:=1 to n do
begin
write('Vvedite rasstoyanie v ycheiku (a[',i,',',j,']=)');
readln(a[i,j]);
a[j,i]:=a[i,j];
end;
end;
for i:=1 to n do
begin
for j:=1 to n do
write(a[i,j]:4);
writeln;
end;
readln;
Derevalgor;
writeln('put po derevynnomu algoritmu:');
for i:=1 to n do
write(q[i]:4);
writeln;
readln;
end.

Последний раз редактировалось ACE Valery; 17.03.2012 в 17:42.
-snt вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вычислить функцию,найти минимальное(pascal) vishn Помощь студентам 0 20.12.2011 09:41
"Минимальное остовное дерево. Алгоритм Прима" FranZuZ Помощь студентам 1 12.12.2011 20:52
Найти остовное дерево минимальной длины. Mollerat Помощь студентам 0 25.05.2011 08:37