Помощь в написании студенческих работ
Антистрессовый сервис

Программа создана на языке паскаль (Delphi 7) по алгоритму рекурсивного поиска

РефератПомощь в написанииУзнать стоимостьмоей работы

For c:=1 to N do { проверяем все вершины }. If (map 0) and (NOT incl) and ((len=0)or (clen+map< len)) then. Ввод описания карты из SrtingGrid. Cells}. I, j: integer; // выбор очередной точки. Procedure SaveGrid (stringgrid: tstringgrid; fn: string); For i :=1 to N do road: ='0'; //StringGrid1.Cells; Вывод найденного маршрута }. N:=LoadGrid (stringgrid1, Opendialog1. fileName)-1; Label1. caption… Читать ещё >

Программа создана на языке паскаль (Delphi 7) по алгоритму рекурсивного поиска (реферат, курсовая, диплом, контрольная)

Текст программного модуля:

unit recurs;

interface.

uses.

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

Dialogs, StdCtrls, Grids, Mask, ExtDlgs;

type.

TForm1 = class (TForm).

Button1: TButton;

Label1: TLabel;

StringGrid1: TStringGrid;

Edit1: TEdit;

Edit2: TEdit;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Button2: TButton;

Button3: TButton;

Edit3: TEdit;

SaveDialog1: TSaveDialog;

Button4: TButton;

OpenDialog1: TOpenDialog;

Label5: TLabel;

procedure Button1Click (Sender: TObject);

procedure Button2Click (Sender: TObject);

procedure FormCreate (Sender: TObject);

procedure StrGrefresh (N:integer);

procedure Button3Click (Sender: TObject);

procedure Button4Click (Sender: TObject);

private.

{ Private declarations }.

public.

{ Public declarations }.

end;

var.

Form1: TForm1;

N:integer;{ кол-во вершин графа}.

implementation.

{$R *.dfm}.

procedure TForm1. Button1Click (Sender: TObject);

var.

map:array[1.100,1.100]of integer;// Карта. map[i, j] не 0, если // точки i и j соединены.

road:array[1.100]of string;// Дорога — номера точек карты.

incl:array[1.100]of boolean; // incl[1]равен TRUE, если точка с номером i включена в road.

start, finish: integer; // Начальная и конечная точки.

found:boolean; len: integer; // длина найденного (минимального) маршрута.

clen:integer; // длина текущего (формируемого) маршрута.

i, j: integer; // выбор очередной точки.

procedure step (s, f, p:integer);

var.

c:integer; { Номер точки, в которую делаем очередной шаг }.

tmp :string;

i:integer;

begin.

if s=f then begin.

found:=TRUE;

len:=clen;{ сохраним длину найденного маршрута }.

{ вывод найденного маршрута }.

Label1.caption:= Label1. caption+StringGrid1.Cells[Start, 0];

for i:=1 to p-1 do.

IF incl[i] then.

Label1.caption:=Label1.caption+' '+road[i];

Label1.caption:=Label1.caption+', длина:'+IntToStr (len)+#13;

end.

else.

{ выбираем очередную точку }.

for c:=1 to N do { проверяем все вершины }.

if (map[s, c] 0) and (NOT incl[c]) and ((len=0)or (clen+map[s, c]< len)) then.

begin // точка соединена с текущей, но не включена в маршрут.

road[p]: =StringGrid1.Cells[0, c]; { добавим вершину в путь }.

incl[p]: =TRUE;{ пометим вершину как включенную }.

clen:=clen+map[s, c];

step (c, f, p+1);

incl[p]: =FALSE;

road[p]: ='0'; //StringGrid1.Cells[c, 0];

clen:=clen-map[s, c];

end;

end;

{ конец процедуры step }.

begin.

Label1.caption:='';

{ инициализация массивов }.

found:=False;

for i :=1 to N do road[i]: ='0'; //StringGrid1.Cells[i, 0];

for i:=1 to N do incl[i]: =FALSE;

{ ввод описания карты из SrtingGrid. Cells}.

for i:=1 to N do.

for j:=1 to N do.

if (StringGrid1.Cells[i, j] '') then.

map[i, j]: =StrToInt (StringGrid1.Cells[i, j]).

else.

map[i, j]: =0;

len:=0; // длина найденного (минимального) маршрута с.

clen:=0; // длина текущего (формируемого) маршрута.

{ Поиск стартовой точки }.

start:=-1;

for i:=1 to N do.

if uppercase (Edit1.text)=StringGrid1.Cells[i, 0] then.

start:=i;;

finish:=-1;

for i:=1 to N do.

if uppercase (Edit2.text)=StringGrid1.Cells[i, 0] then.

finish:=i;;

if (start=-1) or (finish=-1) then begin.

showmessage ('Неверные параметры старта или финиша !!!');

exit;

end;

road[1]: =StringGrid1.Cells[0,start];{ внесем точку в маршрут }.

incl[start]: =TRUE;{ пометим ее как включенную }.

step (start, finish, 2);{ищем вторую точку маршрута }.

if not found // проверим, найден ли хотя бы один путь.

then Label1. caption:='Указанные точки не соединены!';

end;

procedure TForm1. StrGrefresh (N:integer);

begin.

stringgrid1.ColCount:=N;

stringgrid1.RowCount:=N;

stringgrid1.Refresh;

end;

procedure TForm1. Button2Click (Sender: TObject);

begin.

N:=strtoint (edit3.Text);

StrGrefresh (N+1);

end;

procedure TForm1. FormCreate (Sender: TObject);

begin.

N:=1;

edit3.Text:=inttostr (N);

StrGrefresh (N+1);

end;

procedure TForm1. Button3Click (Sender: TObject);

Function LoadGrid (stringgrid: tstringgrid; fn: string):integer;

var.

f: textfile;

temp, x, y: integer;

tempstr: string;

begin.

assignfile (f, fn);

reset (f);

readln (f, temp);

stringgrid.colcount := temp;

Result:=temp;

readln (f, temp);

stringgrid.rowcount := temp;

for X := 0 to stringgrid. colcount — 1 do.

for y := 0 to stringgrid. rowcount — 1 do.

begin.

readln (F, tempstr);

stringgrid.cells[x, y] := tempstr;

end;

closefile (f);

end;

begin.

if (opendialog1.execute) then.

begin.

N:=LoadGrid (stringgrid1, Opendialog1. fileName)-1;

edit3.Text:=inttostr (N);

Label5.Caption:=OpenDialog1.FileName;

end;

end;

procedure TForm1. Button4Click (Sender: TObject);

procedure SaveGrid (stringgrid: tstringgrid; fn: string);

var.

f: textfile;

x, y: integer;

begin.

assignfile (f, fn);

rewrite (f);

writeln (f, stringgrid. colcount);

writeln (f, stringgrid. rowcount);

for X := 0 to stringgrid. colcount — 1 do.

for y := 0 to stringgrid. rowcount — 1 do.

writeln (F, stringgrid. cells[x, y]);

closefile (f);

end;

begin.

if SaveDialog1. Execute then begin.

SaveGrid (stringgrid1, SaveDialog1. FileName);

Label5.Caption:=SaveDialog1.FileName;

end;

end;

end.

Показать весь текст
Заполнить форму текущей работой