Witam! mam taki problem, pisze na zaliczenie program liczący pierwiastki trómianu kwadratowego uwzględniając liczby zespolone,
niestety zamiast policzyc wyskakuje mi błąd
to co napisałem:
unit trojmiany;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Awartosc: TEdit;
Bwartosc: TEdit;
Cwartosc: TEdit;
Button1: TButton;
deltawynik: TEdit;
pierwiastek1wynik: TEdit;
pierwiastek2wynik: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
dotrojmianu1: TEdit;
dotrojmianu2: TEdit;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
LiczA: extended;
LiczB: extended;
LiczC: extended;
delta: extended;
X1 : real;
X2 : real;
X3 : real;
X4 : real;
A_Ok : boolean;
B_Ok : boolean;
C_Ok : boolean;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
A_Ok:=TryStrToFloat(Awartosc.Text , LiczA) ;
B_Ok:=TryStrToFloat(Bwartosc.Text , LiczB) ;
C_Ok:=TryStrToFloat(Cwartosc.Text , LiczC) ;
if (A_Ok=True) and (B_Ok=true) and (C_Ok=true) then
begin
delta:= (LiczB*LiczB)-(4*LiczA*LiczC);
If (delta>0) then
begin
X1:= (-liczB)+sqrt((delta))/(2*liczA);
X2:= (-liczB)-sqrt((delta))/(2*liczA);
end
else if (delta=0) then
begin
X1:= (-liczB)/(2*liczA);
X2:= (-liczB)/(2*liczA);
end
else if (delta<0) then
begin
X1:= (-liczB)/(2*liczA);
X2:= (-liczB)/(2*liczA);
X3:= +sqrt((delta))/(2*liczA);
X4:= -sqrt((delta))/(2*liczA);
end else ;
pierwiastek1wynik.Text:=FloatTostr(X1);
pierwiastek2wynik.Text:=FloatTostr(X2);
dotrojmianu1.Text:=FloatTostr(X3)+ 'i' ;
dotrojmianu2.Text:=FloatTostr(X4)+'i';
deltawynik.Text:=FloatTostr(delta);
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
application.terminate
end;
end.
pomóżcie jak możecie bo nie mam pojecia co zrobić