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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.01.2009, 21:44   #1
Alister
Новичок
Джуниор
 
Регистрация: 18.01.2009
Сообщений: 1
По умолчанию Метод Прима

Здравствуйте! Меня зовут Антон, я студент. У меня возникла следующая проблема:
При реализации программы использующей алгоритм Прима на языке Pascal в процессе ее выполнения возникает ошибка:
Stack overflow error (Ошибка переполнения стека). Код программы:

<CODE>
Program Algo_Prim;
Const DIMMAX = 100;
INFS = 100;
Type Matrix1 = array[1..DIMMAX, 1..DIMMAX] of Integer;
var i, j, n: Integer; C:Matrix1;
{-----------------------------------------}
Procedure Prima(D:Matrix1);
var
Lowcost:array[1..DIMMAX] of Integer;
Closest:array[1..DIMMAX] of Integer;
i, j, k, min:Integer;
Begin
for i:=2 to n do begin
Lowcost[i]:=D[1, i];
Closest[i]:=1;
end;
for i:=2 to n do begin
min:=Lowcost[2];
k:=2;
for j:=3 to n do
if Lowcost[j]<min then
begin
min:=Lowcost[j];
k:=j;
end;
Writeln(k, Closest[k]);
Lowcost[k]:=INFS;
for j:=2 to n do
if (D[k, j]< Lowcost[j]) AND (Lowcost[j]<INFS) then
begin
Lowcost[j]:=D[k, j];
Closest[j]:=k;
end;
end;
End;
{------------}
BEGIN
Writeln('Enter dimmension of matrix');
Readln(n);
Writeln('Enter a matrix of length of edges');
for i:=1 to n do begin
for j:=1 to n do begin
Read(C[i, j]);
end;
end;
Prima(C);
Readln
END.
</CODE>

Вопрос: где именно я допустил ошибку и в чем конкретно я ошибься?
Заранее благодарю!..
Alister вне форума Ответить с цитированием
Старый 19.01.2009, 13:34   #2
Goblin
Форумчанин
 
Регистрация: 24.11.2007
Сообщений: 196
По умолчанию

А можешь описать этот Алгоритм? или ссылку кинь
Goblin вне форума Ответить с цитированием
Старый 19.01.2009, 16:29   #3
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Максимальные размеры матрицы сократил, ошибка пропала. Хотя что делает программа неясно, поскольку после ввода матрицы ее работа заканчивается.
тьфу ты. ввод неправильно написан. readln нету. Перепиши это место.
Код:
Writeln('Enter a matrix of length of edges');
for i:=1 to n do
for j:=1 to n do
Read(C[i, j]);
readln;

Последний раз редактировалось puporev; 19.01.2009 в 16:33.
puporev вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Метод вижинера Ghost_Dante Помощь студентам 12 01.12.2011 21:58
Метод Гаусса IgorKr Помощь студентам 10 03.02.2008 11:28