unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,StrUtils;type
TForm1 = class(TForm)
GroupBox1: TGroupBox;
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
Label3: TLabel;
Edit3: TEdit;
Label4: TLabel;
Edit4: TEdit;
Button1: TButton;
Button2: TButton;
GroupBox2: TGroupBox;
Edit5: TEdit;
procedure FunOne();
function Lagrange(xf:double;nnum:Integer):double;
procedure Button1Click(Sender: TObject);
procedure Edit1Change(Sender: TObject);
procedure Edit2KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure Edit3KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Edit4Change(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
xa,ya : array[0..3] of double;
temp_x,temp_y:array of double;
sum:double;
ReceiveNode_Num:Integer;
Received:integer; //记录空格键的次数
Self_Var:double; //节点自变量
Judge_FunOne_once:integer;implementation{$R *.dfm}procedure TForm1.FunOne();var n:integer;
num:Integer ;
t: double;
str:string;
begin
if temp_x=nil then
begin
showmessage('请输入相应的数');
Edit1.Text:='' ;
Edit2.Text:='' ;
Edit3.Text:='' ;
Edit4.Text:='';
Edit5.Text:='';
exit;
end;
if temp_y=nil then
begin
showmessage('请输入相应的数');
Edit1.Text:='' ;
Edit2.Text:='' ;
Edit3.Text:='' ;
Edit4.Text:='';
Edit5.Text:='';
exit;
end;
if ReceiveNode_Num=0 then
begin
showmessage('请输入相应的数');
Edit1.Text:='' ;
Edit2.Text:='' ;
Edit3.Text:='' ;
Edit4.Text:='';
Edit5.Text:='';
exit;
end;
if Self_Var=0 then
begin
showmessage('请输入相应的数');
Edit1.Text:='' ;
Edit2.Text:='' ;
Edit3.Text:='' ;
Edit4.Text:='';
Edit5.Text:='';
exit;
end;
sum:=0;
for num:=0 to 4 do
begin
t:= temp_x[num];
temp_x[num]:=temp_x[0];
temp_x[0]:=t;
sum:=Lagrange(Self_Var,ReceiveNode_Num)*temp_y[num]+sum;
end;
str:=Floattostr(sum);
Edit5.Text:=str;
// xa:=nil;
// ya:=nil;
end;
function TForm1.Lagrange(xf:double;nnum:Integer):double;
var i:integer;
s1,s2:double;
begin
s1:=1;
s2:=1;
for i:=1 to nnum do
begin
s1:=(Self_Var-temp_x[i])*s1;
s2:=(temp_x[0]-temp_x[i])*s2
end;
Lagrange:=s1/s2;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if Judge_FunOne_once=0 then
begin
Judge_FunOne_once:=1;
FunOne ;
end;
end;procedure TForm1.Edit1Change(Sender: TObject); //为节点数组和
begin //节点函数值数组分配空间
if Edit1.Text<>''then
begin
ReceiveNode_Num:=Trunc(StrtoFloat(Edit1.Text)) ;
Edit5.Text:=FloattoStr(ReceiveNode_Num);
SetLength(temp_x,ReceiveNode_Num);
SetLength(temp_y,ReceiveNode_Num);
end;
end;procedure TForm1.Edit2KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if ReceiveNode_Num=0 then //录入节点值放在数组中
begin
showmessage('请先输入节点个数');
Edit2.Text:='';
exit
end;
if Received=ReceiveNode_Num then
begin
showMessage('够了!你这头猪!');
Edit2.Text:='';
Received:=0;
exit;
end;
if key=VK_SPACE then
begin
temp_x[received]:=StrtoFloat(Edit2.Text);
Received:=Received+1;
Edit2.Text:='';
if Received=ReceiveNode_Num then
Received:=0;
end;end;procedure TForm1.Edit3KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if ReceiveNode_Num=0 then //录入节点值放在数组中
begin
showmessage('请先输入节点个数');
Edit3.Text:='';
exit
end;
if Received=ReceiveNode_Num then
begin
showMessage('够了!你这头猪!');
Edit3.Text:='';
Received:=0;
exit;
end;
if key=VK_SPACE then
begin
temp_y[received]:=StrtoFloat(Edit3.Text);
Received:=Received+1;
Edit3.Text:='';
end;end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if temp_x<>nil then
temp_x:=nil;
if temp_y<>nil then
temp_y:=nil;
end;procedure TForm1.Edit4Change(Sender: TObject);
begin
Self_Var:=StrtoFloat(Edit4.Text);
end;procedure TForm1.FormCreate(Sender: TObject);
begin
Judge_FunOne_once:=0 ;
end;end.
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,StrUtils;type
TForm1 = class(TForm)
GroupBox1: TGroupBox;
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
Label3: TLabel;
Edit3: TEdit;
Label4: TLabel;
Edit4: TEdit;
Button1: TButton;
Button2: TButton;
GroupBox2: TGroupBox;
Edit5: TEdit;
procedure FunOne();
function Lagrange(xf:double;nnum:Integer):double;
procedure Button1Click(Sender: TObject);
procedure Edit1Change(Sender: TObject);
procedure Edit2KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure Edit3KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Edit4Change(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
xa,ya : array[0..3] of double;
temp_x,temp_y:array of double;
sum:double;
ReceiveNode_Num:Integer;
Received:integer; //记录空格键的次数
Self_Var:double; //节点自变量
Judge_FunOne_once:integer;implementation{$R *.dfm}procedure TForm1.FunOne();var n:integer;
num:Integer ;
t: double;
str:string;
begin
if temp_x=nil then
begin
showmessage('请输入相应的数');
Edit1.Text:='' ;
Edit2.Text:='' ;
Edit3.Text:='' ;
Edit4.Text:='';
Edit5.Text:='';
exit;
end;
if temp_y=nil then
begin
showmessage('请输入相应的数');
Edit1.Text:='' ;
Edit2.Text:='' ;
Edit3.Text:='' ;
Edit4.Text:='';
Edit5.Text:='';
exit;
end;
if ReceiveNode_Num=0 then
begin
showmessage('请输入相应的数');
Edit1.Text:='' ;
Edit2.Text:='' ;
Edit3.Text:='' ;
Edit4.Text:='';
Edit5.Text:='';
exit;
end;
if Self_Var=0 then
begin
showmessage('请输入相应的数');
Edit1.Text:='' ;
Edit2.Text:='' ;
Edit3.Text:='' ;
Edit4.Text:='';
Edit5.Text:='';
exit;
end;
sum:=0;
for num:=0 to 4 do
begin
t:= temp_x[num];
temp_x[num]:=temp_x[0];
temp_x[0]:=t;
sum:=Lagrange(Self_Var,ReceiveNode_Num)*temp_y[num]+sum;
end;
str:=Floattostr(sum);
Edit5.Text:=str;
// xa:=nil;
// ya:=nil;
end;
function TForm1.Lagrange(xf:double;nnum:Integer):double;
var i:integer;
s1,s2:double;
begin
s1:=1;
s2:=1;
for i:=1 to nnum do
begin
s1:=(Self_Var-temp_x[i])*s1;
s2:=(temp_x[0]-temp_x[i])*s2
end;
Lagrange:=s1/s2;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if Judge_FunOne_once=0 then
begin
Judge_FunOne_once:=1;
FunOne ;
end;
end;procedure TForm1.Edit1Change(Sender: TObject); //为节点数组和
begin //节点函数值数组分配空间
if Edit1.Text<>''then
begin
ReceiveNode_Num:=Trunc(StrtoFloat(Edit1.Text)) ;
Edit5.Text:=FloattoStr(ReceiveNode_Num);
SetLength(temp_x,ReceiveNode_Num);
SetLength(temp_y,ReceiveNode_Num);
end;
end;procedure TForm1.Edit2KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if ReceiveNode_Num=0 then //录入节点值放在数组中
begin
showmessage('请先输入节点个数');
Edit2.Text:='';
exit
end;
if Received=ReceiveNode_Num then
begin
showMessage('够了!你这头猪!');
Edit2.Text:='';
Received:=0;
exit;
end;
if key=VK_SPACE then
begin
temp_x[received]:=StrtoFloat(Edit2.Text);
Received:=Received+1;
Edit2.Text:='';
if Received=ReceiveNode_Num then
Received:=0;
end;end;procedure TForm1.Edit3KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if ReceiveNode_Num=0 then //录入节点值放在数组中
begin
showmessage('请先输入节点个数');
Edit3.Text:='';
exit
end;
if Received=ReceiveNode_Num then
begin
showMessage('够了!你这头猪!');
Edit3.Text:='';
Received:=0;
exit;
end;
if key=VK_SPACE then
begin
temp_y[received]:=StrtoFloat(Edit3.Text);
Received:=Received+1;
Edit3.Text:='';
end;end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if temp_x<>nil then
temp_x:=nil;
if temp_y<>nil then
temp_y:=nil;
end;procedure TForm1.Edit4Change(Sender: TObject);
begin
Self_Var:=StrtoFloat(Edit4.Text);
end;procedure TForm1.FormCreate(Sender: TObject);
begin
Judge_FunOne_once:=0 ;
end;end.
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货