Добавил:
Kaz
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:АСОИ, Delphi, много вариантов 2 сем / 2стеки / наиб.часто встреч. число / Unit1
.pas unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Button2: TButton;
ListBox1: TListBox;
Label1: TLabel;
Label2: TLabel;
Edit2: TEdit;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
type Tps=^Ts; // Определяет тип элемента стека
Ts=record
inf:integer; // Информационная часть элемента стека
ps:Tps; // Указатель на предыдущий элемент стека
end;
Ta=array[1..1] of Integer;
Tpa=^Ta;
//const n=10;
var
a:tpa;
p:tps;
i,sl,j,max,n:integer;
Form1: TForm1;
implementation
Procedure AddStack(var P:Tps; n:integer);
var pt:Tps;
Begin
new(pt); // Выделяем память для нового элемента стека
pt^.inf:=n; // Записываем новое число в элемент стека
pt^.ps:=p; // Запоминаем указатель на предыдущий элемент стека
p:=pt; // Возвращаем этот новый указатель на вершину стека
end;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit2.Text:='';
ListBox1.Clear;
GetMem(a,10*Sizeof(Integer));
n:=Strtoint(Edit1.text);
for i:=1 to 10 do a^[i]:=0;
p:=nil; // Указатель на вершину стека полагаем равным константе nil
for i:=1 to n do Begin // Открываем цикл записей в стек
sl:=random(10)+1;
for j:=1 to 10 do // Считаем кол-во встречаемости
begin if sl=j then inc(a^[j]) end;
addstack(p,sl); // Записываем его в стек
ListBox1.Items.Add(inttostr(sl));
end;
Edit1.ReadOnly:=true;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
j:=1;
max:=a^[1];
for i:=1 to 10 do if a^[i]>max then begin max:=a^[i]; j:=i; end;
Edit2.Text:=inttostr(j);
Edit1.ReadOnly:=False;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.Text:='10';
Edit2.ReadOnly:=true;
end;
end.
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Button2: TButton;
ListBox1: TListBox;
Label1: TLabel;
Label2: TLabel;
Edit2: TEdit;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
type Tps=^Ts; // Определяет тип элемента стека
Ts=record
inf:integer; // Информационная часть элемента стека
ps:Tps; // Указатель на предыдущий элемент стека
end;
Ta=array[1..1] of Integer;
Tpa=^Ta;
//const n=10;
var
a:tpa;
p:tps;
i,sl,j,max,n:integer;
Form1: TForm1;
implementation
Procedure AddStack(var P:Tps; n:integer);
var pt:Tps;
Begin
new(pt); // Выделяем память для нового элемента стека
pt^.inf:=n; // Записываем новое число в элемент стека
pt^.ps:=p; // Запоминаем указатель на предыдущий элемент стека
p:=pt; // Возвращаем этот новый указатель на вершину стека
end;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit2.Text:='';
ListBox1.Clear;
GetMem(a,10*Sizeof(Integer));
n:=Strtoint(Edit1.text);
for i:=1 to 10 do a^[i]:=0;
p:=nil; // Указатель на вершину стека полагаем равным константе nil
for i:=1 to n do Begin // Открываем цикл записей в стек
sl:=random(10)+1;
for j:=1 to 10 do // Считаем кол-во встречаемости
begin if sl=j then inc(a^[j]) end;
addstack(p,sl); // Записываем его в стек
ListBox1.Items.Add(inttostr(sl));
end;
Edit1.ReadOnly:=true;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
j:=1;
max:=a^[1];
for i:=1 to 10 do if a^[i]>max then begin max:=a^[i]; j:=i; end;
Edit2.Text:=inttostr(j);
Edit1.ReadOnly:=False;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.Text:='10';
Edit2.ReadOnly:=true;
end;
end.
Соседние файлы в папке наиб.часто встреч. число