Показать сообщение отдельно
  #1  
Старый 18.07.2011, 19:40
avelina avelina вне форума
Прохожий
 
Регистрация: 18.07.2011
Сообщения: 3
Репутация: 10
По умолчанию решение уравнений методом фибоначчи

необходимо создать программу вычислений корня уравнения методом фибоначчи.
Траблы:
1) организация интерфейса, кнопок, ввод данных,вывода результата ..
Паскаль знаю, а с delphi не разобралась пока...
2) не обращается к функции

Код:
unit Unit1;
  interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;


type
  TForm1 = class(TForm)
  private
  function fib (n:integer):real;
  Function func (x:real):real;

    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
   const max_fib=1476;
var
   a, b, x, x1, x2, c, y1, y2, func : real;
   n:integer;
   {fib: real;}
   fibValues : Array [0..max_fib] of real;

implementation


{$R *.dfm}

{ TForm1 }


Function TForm1.fib(n:integer):real;
   begin
   if (n=1) or (n=0)then
   result:=1
   else
   result := fib(n-1) + fib(n-2);
   fibValues [n]:= result;
   end;
Function TForm1.func(x:real):real;
   begin
   func:=7*x*x-20*x+25;
   end;

begin
writeln ('a= ');
readln (a);
writeln ('b= ');
readln (b);
writeln ('n= ');
readln (n);

while n>= 0 do
begin
x1:= a +(b-a)* fibValues [(n-2)]/ fibValues [n];
x2:= a +(b-a)* fibValues [(n-1)]/ fibValues [n];
c:=(x1+x2)/2;
y1:= func(a);
y2:= func(c);
n:=n-1;
if y1*y2<0 then
a:=x1
else
b:=x2;
end;
writeln(otvet= ', c:4:5)
end.
Ответить с цитированием