Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Исследование бинарных деревьев / Unit2
.pas unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ComCtrls, Mask;
type
TVvod = class(TForm)
Memo1: TMemo;
BitBtn1: TBitBtn;
SaveDialog1: TSaveDialog;
GroupBox1: TGroupBox;
UpDown1: TUpDown;
Edit1: TEdit;
Button1: TButton;
Edit2: TEdit;
procedure SpeedButton1Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Vvod: TVvod;
implementation
uses unit1;
Var vixod:text;
{$R *.dfm}
procedure TVvod.SpeedButton1Click(Sender: TObject);
begin
Vvod.Close;
end;
procedure TVvod.BitBtn1Click(Sender: TObject);
begin
If savedialog1.execute and FileExists(SaveDialog1.FileName)
Then
Begin
memo1.Lines.SaveToFile(SaveDialog1.FileName);
end;
end;
procedure TVvod.FormClose(Sender: TObject; var Action: TCloseAction);
begin
mainform.Enabled:=true;
end;
procedure TVvod.Button1Click(Sender: TObject);
Var gen:array of tInfo;
vstav,udal,kolvo,x1,vstav_kol,udal_kol:word;
proc:byte;
prt:tPRT;
x:tInfo;
function found:boolean;
Var i:word;
f:boolean;
Begin
f:=false;
i:=0;
While (not f) and (i<vstav) do
Begin
f:=gen[i]=x;
i:=i+1;
end;
found:=f;
end;
function alldel:boolean;
Var i:word;
f:boolean;
Begin
f:=true;
i:=0;
While (f) and (i<vstav) do
Begin
f:=gen[i]=0;
i:=i+1;
end;
alldel:=(i=vstav) and (f);
end;
begin
If savedialog1.execute Then
Begin
AssignFile(vixod,SaveDialog1.FileName);
Rewrite(vixod);
If (edit2.Text<>'') and (edit1.Text<>'') then
Begin
kolvo:=strtoint(trim(edit2.Text));
proc:=strtoint(trim(edit1.Text));
udal_kol:=round(kolvo*proc/100);
vstav_kol:=kolvo-udal_kol;
vstav:=0;
udal:=0;
setlength(gen,1);
writeln(vixod,kolvo);
While vstav+udal<>kolvo do
Begin
randomize;
if (((vstav>0) and (vstav<vstav_kol)) or ((vstav=0) and (kolvo<>0))) and (random(100)>proc) then
Begin
x:=random(65535+1);
If vstav>0 then
While found do
x:=random(65535+1);
setlength(gen,vstav+1);
gen[vstav]:=x;
vstav:=vstav+1;
prt:=random(999+1);
Writeln(vixod,'i ',x,' ',prt);
end
else
If (vstav>0) and (udal<udal_kol) and (not alldel) then
Begin
x1:=random(vstav);
While gen[x1]=0 do
x1:=random(vstav);
x:=gen[x1];
gen[x1]:=0;
udal:=udal+1;
Writeln(vixod,'d ',x);
end;
end;
end;
Closefile(vixod);
end;
memo1.Lines.LoadFromFile(SaveDialog1.FileName);
end;
end.
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ComCtrls, Mask;
type
TVvod = class(TForm)
Memo1: TMemo;
BitBtn1: TBitBtn;
SaveDialog1: TSaveDialog;
GroupBox1: TGroupBox;
UpDown1: TUpDown;
Edit1: TEdit;
Button1: TButton;
Edit2: TEdit;
procedure SpeedButton1Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Vvod: TVvod;
implementation
uses unit1;
Var vixod:text;
{$R *.dfm}
procedure TVvod.SpeedButton1Click(Sender: TObject);
begin
Vvod.Close;
end;
procedure TVvod.BitBtn1Click(Sender: TObject);
begin
If savedialog1.execute and FileExists(SaveDialog1.FileName)
Then
Begin
memo1.Lines.SaveToFile(SaveDialog1.FileName);
end;
end;
procedure TVvod.FormClose(Sender: TObject; var Action: TCloseAction);
begin
mainform.Enabled:=true;
end;
procedure TVvod.Button1Click(Sender: TObject);
Var gen:array of tInfo;
vstav,udal,kolvo,x1,vstav_kol,udal_kol:word;
proc:byte;
prt:tPRT;
x:tInfo;
function found:boolean;
Var i:word;
f:boolean;
Begin
f:=false;
i:=0;
While (not f) and (i<vstav) do
Begin
f:=gen[i]=x;
i:=i+1;
end;
found:=f;
end;
function alldel:boolean;
Var i:word;
f:boolean;
Begin
f:=true;
i:=0;
While (f) and (i<vstav) do
Begin
f:=gen[i]=0;
i:=i+1;
end;
alldel:=(i=vstav) and (f);
end;
begin
If savedialog1.execute Then
Begin
AssignFile(vixod,SaveDialog1.FileName);
Rewrite(vixod);
If (edit2.Text<>'') and (edit1.Text<>'') then
Begin
kolvo:=strtoint(trim(edit2.Text));
proc:=strtoint(trim(edit1.Text));
udal_kol:=round(kolvo*proc/100);
vstav_kol:=kolvo-udal_kol;
vstav:=0;
udal:=0;
setlength(gen,1);
writeln(vixod,kolvo);
While vstav+udal<>kolvo do
Begin
randomize;
if (((vstav>0) and (vstav<vstav_kol)) or ((vstav=0) and (kolvo<>0))) and (random(100)>proc) then
Begin
x:=random(65535+1);
If vstav>0 then
While found do
x:=random(65535+1);
setlength(gen,vstav+1);
gen[vstav]:=x;
vstav:=vstav+1;
prt:=random(999+1);
Writeln(vixod,'i ',x,' ',prt);
end
else
If (vstav>0) and (udal<udal_kol) and (not alldel) then
Begin
x1:=random(vstav);
While gen[x1]=0 do
x1:=random(vstav);
x:=gen[x1];
gen[x1]:=0;
udal:=udal+1;
Writeln(vixod,'d ',x);
end;
end;
end;
Closefile(vixod);
end;
memo1.Lines.LoadFromFile(SaveDialog1.FileName);
end;
end.
Соседние файлы в папке Исследование бинарных деревьев