Добавил:
Kaz
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, stacklib, Buttons;
type
TForm1 = class(TForm)
ListBox1: TListBox;
bPut: TButton;
bGetMinMax: TButton;
fMin: TEdit;
fMax: TEdit;
Label1: TLabel;
Label2: TLabel;
BitBtn1: TBitBtn;
procedure bPutClick(Sender: TObject);
procedure bGetMinMaxClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
PSortedStack : TStack;
POriginStack : TStack;
v_min, v_max, v_sum : integer;
const
n = 25;
implementation
{$R *.dfm}
function min(q1, q2 : integer) : integer;
begin
if q1 >= q2 then Result:=q2
else Result:=q1;
end;
function max(q1, q2 : integer) : integer;
begin
if q1 <= q2 then Result:=q2
else Result:=q1;
end;
procedure TForm1.bPutClick(Sender: TObject);
var i, j : integer;
begin
randomize;
ListBox1.Clear;
PSortedStack := nil;
POriginStack := nil;
for i:=1 to n do
begin
j:=random(200);
AddToStack(POriginStack, j);
ListBox1.AddItem(IntToStr(j), Form1);
end;
end;
procedure update_stack;
var k,q : integer;
begin
while PSortedStack <> nil do
begin
ReadStackItem(PSortedStack, k);
end;
end;
procedure TForm1.bGetMinMaxClick(Sender: TObject);
var k:integer;
begin
v_min := 2010000;
v_max := -2010000;
while POriginStack <> nil do
begin
ReadStackItem(POriginStack, k);
v_min := min(k, v_min);
v_max := max(k, v_max);
v_sum := v_sum + k;
end;
Form1.fMin.Text := inttostr(v_min);
Form1.fMax.Text := inttostr(v_max);
end;
end.
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, stacklib, Buttons;
type
TForm1 = class(TForm)
ListBox1: TListBox;
bPut: TButton;
bGetMinMax: TButton;
fMin: TEdit;
fMax: TEdit;
Label1: TLabel;
Label2: TLabel;
BitBtn1: TBitBtn;
procedure bPutClick(Sender: TObject);
procedure bGetMinMaxClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
PSortedStack : TStack;
POriginStack : TStack;
v_min, v_max, v_sum : integer;
const
n = 25;
implementation
{$R *.dfm}
function min(q1, q2 : integer) : integer;
begin
if q1 >= q2 then Result:=q2
else Result:=q1;
end;
function max(q1, q2 : integer) : integer;
begin
if q1 <= q2 then Result:=q2
else Result:=q1;
end;
procedure TForm1.bPutClick(Sender: TObject);
var i, j : integer;
begin
randomize;
ListBox1.Clear;
PSortedStack := nil;
POriginStack := nil;
for i:=1 to n do
begin
j:=random(200);
AddToStack(POriginStack, j);
ListBox1.AddItem(IntToStr(j), Form1);
end;
end;
procedure update_stack;
var k,q : integer;
begin
while PSortedStack <> nil do
begin
ReadStackItem(PSortedStack, k);
end;
end;
procedure TForm1.bGetMinMaxClick(Sender: TObject);
var k:integer;
begin
v_min := 2010000;
v_max := -2010000;
while POriginStack <> nil do
begin
ReadStackItem(POriginStack, k);
v_min := min(k, v_min);
v_max := max(k, v_max);
v_sum := v_sum + k;
end;
Form1.fMin.Text := inttostr(v_min);
Form1.fMax.Text := inttostr(v_max);
end;
end.