|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
08.03.2015, 21:53 | #1 |
Новичок
Джуниор
Регистрация: 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; |
08.03.2015, 21:54 | #2 |
Новичок
Джуниор
Регистрация: 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; |
08.03.2015, 21:58 | #3 |
Старожил
Регистрация: 19.06.2013
Сообщений: 2,463
|
Это стоит один пузырь.
Репутация: полный "0"
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Помогите с переводом с++ на с# | 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 |