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

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

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

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

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

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

Ребятушки!! Надо срочно перевести этот код из Паскаля в C++!

const
N = 6;

type
//матрица смежности
TAdMatrix = array[1..N, 1..N] of integer;
TLList = array[1..N] of boolean;
TIList = array[1..N] of integer;
var
Gr: TAdMatrix;
MOT: TIList;
impulse_alen вне форума Ответить с цитированием
Старый 08.03.2015, 21:54   #2
impulse_alen
Новичок
Джуниор
 
Регистрация: 08.03.2015
Сообщений: 2
По умолчанию

Это продолжение кода, просто не умещалось в пост!!

procedure OpenFile(ind: integer; var g: TAdMatrix);
var
t: text;
i, j, tmp, m: integer;
begin
assign(t, 'matrix.txt');
reset(t);
for m:=0 to ind do
for i:=1 to n do
for j:=1 to n do
begin
read(t, tmp);
g[i,j]:=tmp;
end;
close(t);
end;

//нахождение короткого цикла
procedure Find_ShortLoop(g: TAdMatrix);
var
Ch: boolean;
L: TLLIst;
ML: Integer;
MPath: string;
function Row_IsNul(g: TAdMatrix; Row: integer): boolean;
begin
Result:=True;
for var i:=1 to N do if g[i, Row] <> 0 then Result:=False;
end;
function Col_IsNul(g: TAdMatrix; Col: integer): boolean;
begin
Result:=True;
for var i:=1 to N do if g[Col, i] <> 0 then Result:=False;
end;
function Matrix_IsNul(g: TAdMatrix): boolean;
begin
Result:=True;
for var i:=1 to N do if not Row_IsNul(g, i) then Result:=False;
end;
function Row_SetNul(var g: TAdMatrix; Row: integer): boolean;
begin
Result:=not Row_IsNul(g, Row);
for var i:=1 to N do g[i, Row]:=0;
end;
function Col_SetNul(var g: TAdMatrix; Col: integer): boolean;
begin
Result:=not Col_IsNul(g, Col);
for var i:=1 to N do g[Col, i]:=0;
end;
//функция возращает
function GetLoopLength(CurV, BaseV: integer; g: TAdMatrix; var L: TLList; CurLength: integer; CurPath: string; A: boolean): integer;
begin
//если текущая вершина есть начальная вершина, то конец
if (CurV = BaseV) and (not A) then
begin
if CurLength < ML then
begin
ML:=CurLength;
MPath:=CurPath;
end;
Result:=CurLength;
Exit;
end;
//если текущая вершина уже была посещена, то конец
if L[CurV] then
begin
Result:=-1;
Exit;
end;
//пометим текущую вершину как посещенную
L[CurV]:=True;
Result:=CurLength;
//перебираем все вершины, смежные с текущей
for var i:=1 to N do
if g[CurV, i] <> 0 then
if GetLoopLength(i, BaseV, g, L, CurLength + g[CurV, i], CurPath + '->' + IntToStr(i), false) > 0 then Result:=CurLength + g[CurV, i];
L[CurV]:=False;
end;
begin
//удалим вершины, от которых циклы не зависят
Ch:=False;
repeat
Ch:=False;
for var i:=1 to N do
begin
if Row_IsNul(g, i) then Ch:=Col_SetNul(g, i);
if Col_IsNul(g, i) then Ch:=Row_SetNul(g, i);
end;
until not Ch;
if Matrix_IsNul(g) then
begin
writeln('Данный граф ацикличен');
Exit;
end;
//среди оставшихся вершин измеряем длину мнимального цикла
ML:=1000;
for var i:=1 to N do
if not Row_IsNul(g, i) then
GetLoopLength(i, i, g, L, 0, '', true);
delete(MPath, 1, 2);
write('Самый короткий цикл в графе: ', MPath);
writeln(', длина цикла: ', ML);
writeln('');
end;

//обход графа в глубину
procedure Share_Deep(g: TAdMatrix; a: integer);
var
Visited: TLList;
Path: string;
function Row_IsVisited(g: TLList): boolean;
begin
Result:=True;
for var i:=1 to N do if not g[i] then Result:=False;
end;
procedure DepthSearch(V: integer);
begin
Path:=Path + '->' + IntToStr(V);
Visited[V]:=True;
for var i:=1 to N do
if (g[V, i] <> 0) and (not Visited[i]) then DepthSearch(i);
end;
impulse_alen вне форума Ответить с цитированием
Старый 08.03.2015, 21:58   #3
zvygin1964
Старожил
 
Аватар для zvygin1964
 
Регистрация: 19.06.2013
Сообщений: 2,463
По умолчанию

Это стоит один пузырь.
Репутация: полный "0"
zvygin1964 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с переводом с++ на с# ka11n C# (си шарп) 5 15.08.2014 08:11
Помогите, пожалуйста,с переводом курсора! Времени в обрез Maemi_IT Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 05.01.2010 21:13
Помогите с переводом! Nattallia Свободное общение 1 20.09.2009 18:24
Помогите пожалуйста с переводом Delphi на C++ Jupiter Помощь студентам 0 07.07.2009 23:33
Помогите с переводом Pascal на С++ stranger_508 Общие вопросы C/C++ 4 06.03.2009 06:42