Помогите преобразовать с помощью классов. Прога уже написана.
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, TeEngine, Series, ExtCtrls, TeeProcs, Chart;
type
TForm1 = class(TForm)
Chart1: TChart;
Series1: TFastLineSeries;
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
LabeledEdit2: TLabeledEdit;
LabeledEdit3: TLabeledEdit;
LabeledEdit1: TLabeledEdit;
Button2: TButton;
Button3: TButton;
Button4: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Unit2;
{$R *.dfm}
function f(x : double):double;
begin
result:=x*x*x+6;
end;
function fib(n : integer):integer;
var i : integer;
a : array[0..20] of integer;
begin
result:=1;
a[0]:=1;
a[1]:=1;
for i:=2 to n-1 do
begin
a[i]:=a[i-1]+a[i-2];
end;
result:=a[n-1];
end;
procedure TForm1.Button1Click(Sender: TObject);
var a,b,x,x1,x2,k,r,e : double;
count,i,n : integer;
begin
series1.Clear;
form2.Memo1.Lines.Clear;
form2.Memo2.Lines.Clear;
form2.Memo3.Lines.Clear;
label1.Caption:='Результат по методу половинного деления : ';
label2.Caption:='Результат по методу "золотого сечения" : ';
label3.Caption:='Результат по методу Фибоначчи : ';
e:=strtofloat(labelededit1.text);
a:=strtoint(labelededit2.text);
b:=strtoint(labelededit3.text);
count:=1;
k:=(3-sqrt(5))/2;
x:=a;
while(x<b) do
begin
series1.AddXY(x,f(x));
x:=x+0.05;
end;
//-------------
while abs(b-a)>e do
begin
x1:=a+(b-a)/4;
x2:=b-(b-a)/4;
form2.Memo1.Lines.Add(inttostr(count)+') '+'a= '+floattostrf(a,ffgeneral,3,5)+', b= '+floattostrf(b,ffgeneral,3,5)+', x1= '+floattostrf(x1,ffgeneral,3,5)+', x2= '+floattostrf(x2,ffgeneral,3,5));
if f(x1)>=f(x2) then a:=x1
else b:=x2;
count:=count+1;
end;
label1.Caption:=label1.Caption+#10+'Число итераций - '+inttostr(count-1)+', x= '+floattostrf((a+b)/2,ffgeneral,3,5)+', y= '+floattostrf(f((a+b)/2),ffgeneral,3,5);
//------------
a:=strtoint(labelededit2.text);
b:=strtoint(labelededit3.text);
count:=1;
x1:=a+k*(b-a);
x2:=b-k*(b-a);
while abs(b-a)>e do
begin
form2.Memo2.Lines.Add(inttostr(count)+') '+'a= '+floattostrf(a,ffgeneral,3,5)+', b= '+floattostrf(b,ffgeneral,3,5)+', x1= '+floattostrf(x1,ffgeneral,3,5)+', x2= '+floattostrf(x2,ffgeneral,3,5));
if f(x1)>=f(x2) then
begin
a:=x1;
x1:=x2;
x2:=b-k*(b-a); end
else begin
b:=x2;
x2:=x1;
x1:=a+k*(b-a); end;
count:=count+1;
end;
label2.Caption:=label2.Caption+#10+'Число итераций - '+inttostr(count-1)+', x= '+floattostrf((a+b)/2,ffgeneral,3,5)+', y= '+floattostrf(f((a+b)/2),ffgeneral,3,5);
//---------------------
count:=1;
a:=strtoint(labelededit2.text);
b:=strtoint(labelededit3.text);
while abs(b-a)>e do
begin
i:=1;
r:=(b-a)/e;
while r>fib(i) do inc(i);
x1:=a+(fib(i-1)/fib(i))*(b-a);
x2:=b-(fib(i-1)/fib(i))*(b-a);
form2.Memo3.Lines.Add(inttostr(count)+') '+'a= '+floattostrf(a,ffgeneral,3,5)+', b= '+floattostrf(b,ffgeneral,3,5)+', x1= '+floattostrf(x1,ffgeneral,3,5)+', x2= '+floattostrf(x2,ffgeneral,3,5));
if x1>x2 then
begin
x:=x1;
x1:=x2;
x2:=x;
end;
if f(x1)>=f(x2) then a:=x1
else b:=x2;
count:=count+1;
end;
label3.Caption:=label3.Caption+#10+'Число итераций - '+inttostr(count-1)+', x= '+floattostrf((a+b)/2,ffgeneral,3,5)+', y= '+floattostrf(f((a+b)/2),ffgeneral,3,5);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if form2.Visible=false then begin form2.Memo1.Visible:=true; form2.Visible:=true end
else begin form2.Visible:=false; form2.Memo1.Visible:=false; end;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
if form2.Visible=false then begin form2.Memo2.Visible:=true; form2.Visible:=true end
else begin form2.Visible:=false; form2.Memo2.Visible:=false; end;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
if form2.Visible=false then begin form2.Memo3.Visible:=true; form2.Visible:=true end
else begin form2.Visible:=false; form2.Memo3.Visible:=false; end;
end;
end.