Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабы / 4

.docx
Скачиваний:
21
Добавлен:
04.04.2018
Размер:
128.29 Кб
Скачать

Задание:

2.

Дан связный неориентированный граф G=(V,E). (рис.2)

Граф задан с помощью матрицы смежности.

Найти: используя алгоритм поиска в глубину, построить и вывести в объект на форму одиночный каркас( остовное дерево ).

Код: unit Unit5;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs,ComObj, StdCtrls, Grids; //добавила ComObj

type

TForm5 = class(TForm)

Button1: TButton;

Edit1: TEdit;

Memo1: TMemo;

Label1: TLabel;

Label2: TLabel;

Button2: TButton;

Edit2: TEdit;

Label3: TLabel;

StringGrid1: TStringGrid;

procedure FormCreate(Sender: TObject);

procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form5: TForm5;

Excel: Variant; //переменную добавила

var

n,t,i,j,t1:integer;

Proidena: array [1..10] of boolean;

A: array of array of integer;

implementation

{$R *.dfm}

procedure TForm5.FormCreate(Sender: TObject);

var

x,y:integer;

begin

Excel:=CreateOleObject('Excel.Application');

Excel.Application.WorkBooks.Add('E:\Второй курс\1 семестр\Программирование\граф.xlsx'); //для планшета

//Excel.Application.WorkBooks.Add('F:\граф.xlsx'); //для компа

//Excel.Visible:=True; //После отладки можно закомментировать эту строку

Excel.DisplayAlerts:=False;

for x := 1 to StringGrid1.ColCount - 1 do

StringGrid1.Cells[x, 0] := IntToStr(x);

for y := 1 to StringGrid1.ColCount - 1 do

StringGrid1.Cells[0, y] := IntToStr(y);

end;

procedure TForm5.FormCloseQuery(Sender: TObject; var CanClose: Boolean);

begin

try

Excel.Quit;

except

end;

CanClose:=True;

end;

procedure TForm5.Button1Click(Sender: TObject);

var i,j:integer;

begin

with StringGrid1 do

for i:=1 to RowCount do

for j:=1 to ColCount do

Cells[j, i]:=Excel.WorkSheets.Item['лист1'].Cells[i, j];

//

end;

procedure TForm5.Button2Click(Sender: TObject);

procedure vis(v,k: integer);

begin

Proidena[v] := true;

i:=1;

repeat

A[v,i]:=strtoint(StringGrid1.Cells[i,v]);

if (A[v, i]<>0) and (Proidena[i]=false) then begin

memo1.lines.add(inttostr(v)+'-'+inttostr(i));

vis(i,k);

end;

i:=i+1;

until i>k;

end;

begin

n:=strtoint(edit1.text);

t:=strtoint(edit2.text);

t1:=t+1;

setlength(A,t1,t1);

vis(n,t);

end;

end;

Результат:

Блок схема:

Ввод n,t

Начало

vis(n,t);

end

                                procedure vis(v,k: integer);

Proidena[v] := true;

i:=1;

i<=k

end

-

A[v,i]:=strtoint(StringGrid1.Cells[i,v]);

+

-

+

v:=i;

+

5

Соседние файлы в папке Лабы