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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.06.2008, 22:04   #1
DEN_DENZEL
Новичок
Джуниор
 
Регистрация: 06.06.2008
Сообщений: 1
По умолчанию Помогите пожалуйста исправить ошыбки в програме(Pascal)

program SPathL;
{********************************** *****************}
{ Кратчайшее расстояние между двумя вершинами графа }
{********************************** *****************}
uses
Crt, LESync;
const
N = 6; { Кол-во строк в матрице }
M = 7; { Кол-во столбцов в матрице }
type
List = ^Element;
Element = record
ID : Byte;
Inf : LongInt;
Next : List;
end; { record }
RefNode = ^Node;
RefArc = ^Arc;
Node = record
ID : Byte;
Next : RefNode;
ArcList : RefArc;
end; { record }
Arc = record
ID : Byte;
Inf : Integer;
Next : RefArc;
Adj : RefNode;
end; { record }
IMatrix = Array [1..N, 1..M] of Integer;
var
InputFile : Text; { Входной файл с матрицей графа }
Min : LongInt; { Локальный минимум }
GraphMatrix : IMatrix; { Матрица графа }
i, j : Byte; { Счётчики }
Graph : RefNode; { Сам граф в виде списка с подсписками }
LHead : List;
StartNode,
FinishNode : Byte; { Начальная и конечная вершины }
LocalStart : RefNode; { Локальная стартовая вершина }
Temp : RefArc;
p, q, TmpL : List;
{********************************** *******************************}
procedure InsertNode (var NodeList : RefNode;
Num : Byte);
var
p, q : RefNode;
begin
New(q);
q^.ID := Num;
q^.ArcList := nil;
q^.Next := nil;
if NodeList = nil then NodeList := q
else begin
p := NodeList;
while p^.Next <> nil do
p := p^.Next;
p^.Next := q;
end; { if..else }
end; { InsertNode }

procedure InsertArc (FromNode, ToNode : RefNode;
x : Integer;
Num : Byte);
var
q, p : RefArc;
begin
if (FromNode = nil) or
(ToNode = nil) then WriteLn('Ошибка! Узел не найден!')
else begin
New(q);
q^.ID := Num;
q^.Inf := x;
q^.Adj := ToNode;
q^.Next := nil;
if FromNode^.ArcList = nil then FromNode^.ArcList := q
else begin
p := FromNode^.ArcList;
while p^.Next <> nil do
p := p^.Next;
p^.Next := q;
end; { if..else }
end; { if..else }
end; { InsertArc }

function SearchNode (NodeList : RefNode;
Num : Byte) : RefNode;
begin
while (NodeList <> nil) and (NodeList^.ID <> Num) do
NodeList := NodeList^.Next;
if NodeList = nil then SearchNode := nil
else SearchNode := NodeList;
end; { SearchNode }

procedure GraphInitialize;
var
q, p, t : RefNode;
Weight : Integer;
begin
Graph := nil;
for i := 1 to N do
InsertNode(Graph, i);
p := Graph;
for j := 1 to M do begin
for i := 1 to N do begin
if GraphMatrix[i, j] > 0 then begin
q := SearchNode(p, i);
Weight := GraphMatrix[i, j];
end; { if..then }
if GraphMatrix[i, j] < 0 then t := SearchNode(p, i);
p := p^.Next;
end; { for }
InsertArc(q, t, Weight, j);
p := Graph;
end; { for }
end; { GraphInitialize }

function Minimum (a, b : LongInt) : LongInt;
begin
if a < b then Minimum := a
else Minimum := b;
end; { Minimum }
DEN_DENZEL вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите пожалуйста найти и исправить ошибку Sam04 Паскаль, Turbo Pascal, PascalABC.NET 4 10.06.2008 08:28
помогите пожалуйста исправить задачу kardan Помощь студентам 2 12.04.2008 10:16
Пожалуйста помогите исправить несколько задач Shatyn Помощь студентам 5 25.06.2007 20:20
Помогите,пожалуйста,исправить задачу... Загадка Паскаль, Turbo Pascal, PascalABC.NET 1 21.12.2006 00:42