5,939
社区成员
发帖
与我相关
我的任务
分享
unit UMain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TFrmMain = class(TForm)
Label1: TLabel;
Edt_Num: TEdit;
Label2: TLabel;
Edt_SeqShow: TEdit;
Btn_CreatSeq: TButton;
Label3: TLabel;
Edt_X: TEdit;
Label4: TLabel;
Edt_Y: TEdit;
Btn_GetY: TButton;
procedure Btn_CreatSeqClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Btn_GetYClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FrmMain: TFrmMain;
Seq: array of Integer;
const
EmptyStr = '';
BlankStr = ' ';
ErrInput = '输入X不合法';
implementation
{$R *.dfm}
procedure TFrmMain.Btn_CreatSeqClick(Sender: TObject);
var
n,i,m: integer;
TemStr: string;
begin
n := StrToInt(Trim(Edt_Num.Text));
SetLength(Seq,n);
m := n*20; //构造随机数的范围,暂时将个数乘20,尽量避免重复。
for i := 0 to n - 1 do
begin
Seq[i] := random(m);
end;
TemStr := EmptyStr;
for i := 0 to n - 1 do
begin
TemStr := IntToStr(Seq[n - 1-i]) + BlankStr +TemStr;
end;
Edt_SeqShow.Text := TemStr;
end;
procedure TFrmMain.Btn_GetYClick(Sender: TObject);
var
TemStr: String;
TemZS: string; //整数部分
IntTemZS: integer;
IntX,IntY: integer;
i: Integer;
SeqNum: Integer;
TemY: Double;
begin
TemStr := Trim(Edt_X.Text);
SeqNum := length(Seq);
i := Pos('.',TemStr);
if i > 0 then
begin //有小数的情况
TemZS := Copy(TemStr,1,i-1);
IntTemZS := StrToInt(TemZS);
if SeqNum > IntTemZS then
begin
TemY := (Seq[IntTemZS-1] + Seq[IntTemZS])/2;
IntY := Trunc(TemY + 0.5);
Edt_Y.Text := IntToStr(IntY);
end
else
ShowMessage(ErrInput);
end
else
begin //没有小数的情况
IntX := StrToInt(TemStr);
if SeqNum >= IntX then
begin
IntY := Seq[IntX-1];
Edt_Y.Text := IntToStr(IntY);
end
else
ShowMessage(ErrInput);
end;
end;
procedure TFrmMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Finalize(Seq);
end;
end.
顶一下