Поправил скрипт, поправил неточности в библиотеке

This commit is contained in:
2026-07-31 11:20:45 +03:00
parent d3da512178
commit 3d52fdec57
44 changed files with 1956 additions and 51 deletions
+49
View File
@@ -0,0 +1,49 @@
(*
===============================================================================
Project : PLC_Library
Device : -
Path : Иное
Name : DFS
Type : PROGRAM
Exported : 2026-07-31 11:16:16
===============================================================================
*)
PROGRAM DFS
(* Алгоритм поиска в глубину *)
(* Копировать в свою программу *)
VAR_INPUT
graph: POINTER TO ARRAY[1..n, 1..n] OF BOOL; // Граф связности (редактируется извне программы через DFS.graph[i,j])
connected: POINTER TO ARRAY[1..n] OF INT; //подключенные вершины
Start: INT := 1; // Вершина из которой начинается поиск
END_VAR
VAR
STACK: STACK_I16;
v: INT;
i: INT;
visited: ARRAY[1..n] OF BOOL; // посещенные вершины
k: INT := 1; // номер посещенной вершины
END_VAR
VAR CONSTANT
n : INT := 12; // Количество вершин графа
END_VAR
(*----- IMPLEMENTATION -----*)
FOR i:=1 TO n DO
visited[i]:=0;
connected^[i]:=0;
END_FOR
k:=1;
STACK(Din:= Start, PUSH:= 1);
visited[Start]:= 1;
WHILE NOT STACK.EMPTY DO
STACK(pop:= 1, Dout=>v);
FOR i:=1 TO n DO
IF (graph^[v,i] AND NOT(visited[i])) THEN
visited[i]:= 1;
STACK(Din:= i, PUSH:= 1);
connected^[k]:=i;k:=k+1;
END_IF
END_FOR
END_WHILE
END_PROGRAM