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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.04.2009, 16:28   #1
RIO
Форумчанин
 
Аватар для RIO
 
Регистрация: 15.12.2007
Сообщений: 422
По умолчанию Алгоритм Флери

Имеется алгоритм Флери, для нахождения цикла Эйлера в графе . . .

program Project1;

{$APPTYPE CONSOLE}

uses
SysUtils;
const
n=5;
m=100;
var
G: array[1..n, 1..n] of Integer =
(
(0, 1, 1, 1, 1),
(1, 0, 1, 1, 1),
(1, 1, 0, 1, 1),
(1, 1, 1, 0, 1),
(1, 1, 1, 1, 0)
);

Var
Stack: array[1..M] of integer;
j, VV, k, p, q, s: integer;
T: Boolean;
Procedure Search(v: integer);
var i: integer;
Begin
For i:=1 to N do
If G[v,i]<>0 then
begin
G[v,i]:=0;
G[i,v]:=0;
Search(i);
end;
K:=K+1;
Stack[K]:=v;
End;
BEGIN
T:=true;
For p:=1 to N do begin
S:=0;
For q:=1 to N do begin
S:=S+G[p,q];
end;
If S mod 2<>0 then T:=false;
End;
K:=0;
Readln (VV);
If T then Search (VV);
If not T then
writeln('Граф не является эйлеровым: в нем невозможно выделить эйлерового цикла');
For j:=1 to K do
Write(Stack[j],' ');
Readln;
end.

Результат :

1 5 4 3 5 2 4 1 3 2 1

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

Вот код :

program Project2;

{$APPTYPE CONSOLE}

uses
SysUtils;
const
n=5;
m=100;
var
G: array of array of Integer;
Var
Stack: array[1..M] of integer;
j, VV, k, p, q, s: integer;
T: Boolean;
Procedure Search(v: integer);
var i: integer;
Begin
For i:=0 to High(G) do

// Как мне кажется ошибка кроется где-то здесь . . .

If G[v,i]<>0 then
begin
G[v,i]:=0;
G[i,v]:=0;
Search(i);
end;
K:=K+1;
Stack[K]:=v;
End;
BEGIN
SetLength(G, N - 1, N - 1);

{
Здесь стоит функция которая задает аналогичный массив
(
(0, 1, 1, 1, 1),
(1, 0, 1, 1, 1),
(1, 1, 0, 1, 1),
(1, 1, 1, 0, 1),
(1, 1, 1, 1, 0)
);

}

T:=true;
For p:=0 to High(G) do begin
S:=0;
For q:=0 to High(G) do begin
S:=S+G[p,q];
end;
If S mod 2<>0 then T:=false;
End;
K:=0;
Readln (VV);
If T then Search (VV);
If not T then
writeln('Граф не является эйлеровым: в нем невозможно выделить эйлерового цикла');
For j:=1 to K do
Write(Stack[j],' ');
Readln;
end.
RIO вне форума Ответить с цитированием
Старый 20.04.2009, 19:14   #2
RIO
Форумчанин
 
Аватар для RIO
 
Регистрация: 15.12.2007
Сообщений: 422
По умолчанию

Помогите пожалуйста, на завтра нужно здать курсовую, все уже готово, только вот это осталось Будьте добры
RIO вне форума Ответить с цитированием
Старый 21.04.2009, 08:59   #3
RIO
Форумчанин
 
Аватар для RIO
 
Регистрация: 15.12.2007
Сообщений: 422
По умолчанию

Исправте ошибку
RIO вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Алгоритм А* Claster Помощь студентам 1 24.05.2011 18:45
Алгоритм Artruman Общие вопросы Delphi 4 09.04.2009 00:59
Алгоритм Artruman БД в Delphi 1 06.04.2009 00:30
Алгоритм SunKnight Работа с сетью в Delphi 5 29.04.2008 15:24
Алгоритм Rifler Паскаль, Turbo Pascal, PascalABC.NET 3 30.03.2008 01:33