Программа поиска соединительного пути в 3-звенной КС. Алгоритм решения программы. Анализ полученных результатов, страница 4

TForm1 = class(TForm)

GroupBox1: TGroupBox;

SpeedButton1: TSpeedButton;

SpeedButton2: TSpeedButton;

SpeedButton3: TSpeedButton;

SpeedButton4: TSpeedButton;

SpeedButton5: TSpeedButton;

SpeedButton6: TSpeedButton;

SG1: TStringGrid;

SG2: TStringGrid;

StaticText1: TStaticText;

T1: TStringGrid;

T2: TStringGrid;

T3: TStringGrid;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

SpeedButton7: TSpeedButton;

procedure SpeedButton6Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure SpeedButton1Click(Sender: TObject);

procedure SpeedButton3Click(Sender: TObject);

procedure SpeedButton2Click(Sender: TObject);

procedure SpeedButton5Click(Sender: TObject);

procedure SpeedButton7Click(Sender: TObject);

procedure SpeedButton4Click(Sender: TObject);

private

{ Private declarations }

procedure Rashchet;

public

{ Public declarations }

end;

var

Form1: TForm1;

a:array[1..3,0..3,0..3]of byte;{Массивы полей [№ звена, № коммутатора, Выход]}

Num,AK,H,k:word;         {Дополнительные переменные}

mas,mas2,mas3,E,Kom1,Kom2:byte;

implementation

uses Unit2;

{$R *.dfm}

{Процедура расчета пути}

procedure TForm1.Rashchet;

var i,j:word;

OK:boolean;

begin

OK:=false; {Переменная OK говорит о результатах расчета (по умолчанию)}

for i:=0 to 3 do

begin

mas:=a[1,i,k];  {просматриваем каждый АК (коммутатор А)}

if mas=1 then   {Если свободен (=1), то}

for j:=0 to 3 do

begin

mas2:=a[2,i,j]; {просматриваем коммутатор B}

if mas2=1 then  {Если свободен (=1), то}

if a[3,H,j]=1 then {Если есть выход на заданный путь (=1)}

begin

OK:=true;            {результат расчета положителен}

SG2.cells[Num,0]:=inttostr(AK); {записываем номер АК в БЗ ППК}

E:=j;                          

Kom1:=i;

Kom2:=i*4+j;

Speedbutton5.Enabled:=true; {активируем кнопки обработки информации}

Speedbutton4.Enabled:=true;

Speedbutton7.Enabled:=true;

EXIT; {Выходим из цикла}

end;

end;

end;

if OK=false then {если результат расчета отрицательный (занята линия)}

begin

Speedbutton4.Enabled:=false; {Деактивируем кнопки обработки информации}

Speedbutton5.Enabled:=false;

Speedbutton7.Enabled:=false;

SG2.cells[Num,1]:=inttostr(AK);  {записываем номер АК в БЗ КПЗ}

end;

end;

{реакция на нажатие кнопки «Выход»}

procedure TForm1.SpeedButton6Click(Sender: TObject);

begin

form1.Close;  {Завершаем программу}

end;

{Процесс создания первой формы приложения}

procedure TForm1.FormCreate(Sender: TObject);

var i:byte;

R:TGridRect;

begin

SG1.Cells[0,0]:='№АК';  {Подписываем столбцы и строки таблиц}

SG1.Cells[0,1]:='НАПР';

SG2.Cells[0,0]:='БЗ ППК';

SG2.Cells[0,1]:='БЗ КПЗ';

for i:=0 to 3 do

begin

T1.cells[0,i+1]:=inttostr(i);

T1.cells[i+1,0]:=inttostr(i);

T2.cells[0,i+1]:=inttostr(i);

T2.cells[i+1,0]:=inttostr(i);

T3.cells[0,i+1]:=inttostr(i);

T3.cells[i+1,0]:=inttostr(i);

end;

R.Left:=1;R.Top:=1;R.Right:=4;R.Bottom:=4;  {закрашиваем таблицы}

T1.Selection:=R;

T2.Selection:=R;

T3.Selection:=R;

R.Left:=1;R.Top:=0;R.Right:=10;R.Bottom:=1;

SG1.Selection:=R;

SG2.Selection:=R;

Num:=0; {номер эксперимента =0}

end;

{Реакция на нажатие кнопки «Задать начальные данные»}

procedure TForm1.SpeedButton1Click(Sender: TObject);

var i,j:byte;

begin

randomize;   {Заполняем таблицы}

for i:=1 to 4 do

for j:=1 to 4 do

begin

a[1,i-1,j-1]:=random(10)mod 2;

a[2,i-1,j-1]:=random(10)mod 2;

a[3,i-1,j-1]:=random(10)mod 2;

T1.Cells[i,j]:=inttostr(a[1,i-1,j-1]);

T2.Cells[i,j]:=inttostr(a[2,i-1,j-1]);

T3.Cells[i,j]:=inttostr(a[3,i-1,j-1]);

end;

SpeedButton1.Enabled:=false;  {деактивируем эту кнопку}

SpeedButton2.Enabled:=true;   {активируем «Задать АК»}

SpeedButton3.Enabled:=true;   {и «Очистить»}