Добавил:
Kaz
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:АСОИ, Delphi, много вариантов 2 сем / 2стеки / !подозрительное / стек / отчёт
.txt Отчёт Луцеина Александра
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
ListBox1: TListBox;
Button1: TButton;
LabeledEdit1: TLabeledEdit;
Button2: TButton;
Button3: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
LabeledEdit2: TLabeledEdit;
Button4: TButton;
Button5: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Unit2;
var sp:Tspis;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
sp.ismenit(strtoint(form1.LabeledEdit1.Text));
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
sp:=Tspis.create;
randomize;
end;
procedure TForm1.Button2Click(Sender: TObject);
var i:integer;
begin
sp.print(form1.ListBox1);
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
form1.Label4.Caption:=inttostr(sp.find);
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
sp.Destroy;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
sp.add(strtoint(form1.LabeledEdit2.Text));
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
sp.delete(strtoint(form1.LabeledEdit2.Text));
end;
end.
unit Unit2;
interface
uses StdCtrls, SysUtils;
type
Psel=^sel;
sel=Record
b:integer;
a:Psel;
end;
Tspis=class(Tobject)
c:Psel;
n:integer;
constructor create;
procedure ismenit(n1:integer);
procedure print(list:TListBox);
function find:integer;
procedure add(n1:integer);
procedure delete(n1:integer);
end;
implementation
constructor Tspis.create;
begin
inherited create;
c:=nil;
n:=0;
end;
procedure Tspis.print(list:TListBox);
var i:integer;c1:Psel;
begin
list.Clear;
c1:=c;
for i:=1 to n do
begin
list.Items.Add(inttostr(c1.b));
c1:=c1.a;
end;
end;
procedure Tspis.ismenit(n1:integer);
var i:integer;
c1:Psel;
begin
n:=n1;
if not(c=nil)then
while c.a<>Nil do
begin
c1:=c.a;
dispose(c);
c:=c1;
end;
c:=nil;
for i:=1 to n do
begin
new(c1);
c1.b:=i;
c1.a:=c;
c:=c1;
end;
end;
function Tspis.find:integer;
var min,max,n1,m,i:integer;
c1:Psel;
begin
if n=0 then begin result:=0;exit;end;
c1:=c;
max:=-1;min:=10000;
for i:=1 to n do
begin
if c1.b>max then
begin
max:=c1.b;m:=i;
end;
if c1.b<min then
begin
min:=c1.b;n1:=i;
end;
c1:=c1.a;
end;
result:=abs(m-n1)-1;
if result=-1 then result:=0;
end;
procedure Tspis.add(n1:integer);
var i:integer;c1,c2:Psel;
begin
c1:=c;n:=n+1;
if n1>1 then begin
for i:=1 to n1-2 do
c1:=c1.a;
new(c2);
c2.b:=random(10000);
c2.a:=c1.a;
c1.a:=c2;
end
else
begin
new(c1);
c1.b:=random(10000);
c1.a:=c;
c:=c1;
end;
end;
procedure Tspis.delete(n1:integer);
var i:integer;c1,c2:Psel;
begin
c1:=c;n:=n-1;
if n1>1 then begin
for i:=1 to n1-2 do
c1:=c1.a;
c2:=c1.a;
c1.a:=c2.a;
Dispose(c2);
end
else c:=c.a;
end;
end.
Лабараторная работа №5
9. Создать стек из случайных чисел и определить,
сколько элементов сте-ка находится между минимальным и
максимальным элементами.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
ListBox1: TListBox;
Button1: TButton;
LabeledEdit1: TLabeledEdit;
Button2: TButton;
Button3: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
LabeledEdit2: TLabeledEdit;
Button4: TButton;
Button5: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Unit2;
var sp:Tspis;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
sp.ismenit(strtoint(form1.LabeledEdit1.Text));
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
sp:=Tspis.create;
randomize;
end;
procedure TForm1.Button2Click(Sender: TObject);
var i:integer;
begin
sp.print(form1.ListBox1);
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
form1.Label4.Caption:=inttostr(sp.find);
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
sp.Destroy;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
sp.add(strtoint(form1.LabeledEdit2.Text));
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
sp.delete(strtoint(form1.LabeledEdit2.Text));
end;
end.
unit Unit2;
interface
uses StdCtrls, SysUtils;
type
Psel=^sel;
sel=Record
b:integer;
a:Psel;
end;
Tspis=class(Tobject)
c:Psel;
n:integer;
constructor create;
procedure ismenit(n1:integer);
procedure print(list:TListBox);
function find:integer;
procedure add(n1:integer);
procedure delete(n1:integer);
end;
implementation
constructor Tspis.create;
begin
inherited create;
c:=nil;
n:=0;
end;
procedure Tspis.print(list:TListBox);
var i:integer;c1:Psel;
begin
list.Clear;
c1:=c;
for i:=1 to n do
begin
list.Items.Add(inttostr(c1.b));
c1:=c1.a;
end;
end;
procedure Tspis.ismenit(n1:integer);
var i:integer;
c1:Psel;
begin
n:=n1;
if not(c=nil)then
while c.a<>Nil do
begin
c1:=c.a;
dispose(c);
c:=c1;
end;
c:=nil;
for i:=1 to n do
begin
new(c1);
c1.b:=i;
c1.a:=c;
c:=c1;
end;
end;
function Tspis.find:integer;
var min,max,n1,m,i:integer;
c1:Psel;
begin
if n=0 then begin result:=0;exit;end;
c1:=c;
max:=-1;min:=10000;
for i:=1 to n do
begin
if c1.b>max then
begin
max:=c1.b;m:=i;
end;
if c1.b<min then
begin
min:=c1.b;n1:=i;
end;
c1:=c1.a;
end;
result:=abs(m-n1)-1;
if result=-1 then result:=0;
end;
procedure Tspis.add(n1:integer);
var i:integer;c1,c2:Psel;
begin
c1:=c;n:=n+1;
if n1>1 then begin
for i:=1 to n1-2 do
c1:=c1.a;
new(c2);
c2.b:=random(10000);
c2.a:=c1.a;
c1.a:=c2;
end
else
begin
new(c1);
c1.b:=random(10000);
c1.a:=c;
c:=c1;
end;
end;
procedure Tspis.delete(n1:integer);
var i:integer;c1,c2:Psel;
begin
c1:=c;n:=n-1;
if n1>1 then begin
for i:=1 to n1-2 do
c1:=c1.a;
c2:=c1.a;
c1.a:=c2.a;
Dispose(c2);
end
else c:=c.a;
end;
end.
Лабараторная работа №5
9. Создать стек из случайных чисел и определить,
сколько элементов сте-ка находится между минимальным и
максимальным элементами.