Скачиваний:
13
Добавлен:
15.06.2014
Размер:
3.6 Кб
Скачать
Отчёт Луцеина Александра

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. Создать стек из случайных чисел и определить,
сколько элементов сте-ка находится между минимальным и
максимальным элементами.
Соседние файлы в папке стек