Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.04.2012, 20:15   #1
Levox
 
Регистрация: 21.10.2011
Сообщений: 4
По умолчанию Работа с ООП. Delphi

Помогите преобразовать с помощью классов. Прога уже написана.

Код:
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.

Последний раз редактировалось Levox; 23.04.2012 в 20:16. Причина: Забыл поправить.
Levox вне форума Ответить с цитированием
Старый 24.04.2012, 23:06   #2
Levox
 
Регистрация: 21.10.2011
Сообщений: 4
По умолчанию

Народ помогите, очень надо!
Levox вне форума Ответить с цитированием
Старый 25.04.2012, 07:50   #3
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

А что Вы хотите получить?
s-andriano вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с Boolean в ООП Malamadre Общие вопросы Delphi 3 11.08.2011 09:08
ООП в Delphi. Arsk Фриланс 4 12.04.2011 18:17
ООП.Работа с матрицами. vitass Помощь студентам 0 12.04.2011 00:30
Работа с файлами ООП kate311893 Помощь студентам 0 27.11.2010 10:50
delphi ооп demonara Помощь студентам 13 21.10.2010 19:00