03.12.2015, 22:39
Hej, wszystkich, potrzebuje pomocy w programie obliczającym miejsca zerowe funkcji kwadratowej. Używam do tego Lazarusa. Przepraszam za słabe ogarnianie tematu
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
ActnList;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
procedure Button1click(Sender: Tobject);
procedure Button2click(Sender: Tobject);
procedure Button3click(sender: Tobject);
procedure Button4click(Sender: Tobject);
procedure test_bledow; //Deklaracja procedury test bledow
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
a,b,c,d,x1,x2 : real; //Deklaracja zmiennych globalnych a,b,c,x1,x2,delta typu rzeczywistego
implementation
{$R *.lfm}
//Procedura obslugi bledów
procedure Tform1.test_bledow;
begin
try
a:=StrTofloat(Edit1.Text); //Przypisanie zmiennej a zmienionego na liczbę rzeczywista
//lańcucha znaków wpisanego w Edit1
b:=StrTofloat(Edit2.Text); //Przypisanie zmiennej b zmienionego na liczbę rzeczywista
//lańcucha znaków wpisanego w Edit2
c:=StrTofloat(Edit3.Text); //Przypisanie zmiennej c nmienionego na liczbę rzeczywistą
//lańcucha znaków wpisanego w Edit3
except
ShowMessage ('Blad!proszę podac liczbę!'); //Wyswietlenie komunikatu o blędzie
end;
end;
//Obliczanie x1 i x2
Procedure TForm1.Button1Click(Sender: Tobject);
begin
test_bledow; //Wywolanie procedury obslugi bledów
d:=(b*b)-(4*a*c);
writeln('delta: ',d);
if (d<0) then
begin
writeln('brak pierwiastkow');
end
else if (d=0) then
begin
x1:=(-b/(2*a));
writeln('Pierwiastek: ',x1);
end
else
begin
x1:=(-b-sqrt(d))/(2*a);
x2:=(-b+sqrt(d))/(2*a);
writeln ('wielomian ma dwa miejsca zerowe: x1= ',x1:0:2,' i x2= ',x2:0:2);
end;
readln;
end;
end.
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
ActnList;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
procedure Button1click(Sender: Tobject);
procedure Button2click(Sender: Tobject);
procedure Button3click(sender: Tobject);
procedure Button4click(Sender: Tobject);
procedure test_bledow; //Deklaracja procedury test bledow
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
a,b,c,d,x1,x2 : real; //Deklaracja zmiennych globalnych a,b,c,x1,x2,delta typu rzeczywistego
implementation
{$R *.lfm}
//Procedura obslugi bledów
procedure Tform1.test_bledow;
begin
try
a:=StrTofloat(Edit1.Text); //Przypisanie zmiennej a zmienionego na liczbę rzeczywista
//lańcucha znaków wpisanego w Edit1
b:=StrTofloat(Edit2.Text); //Przypisanie zmiennej b zmienionego na liczbę rzeczywista
//lańcucha znaków wpisanego w Edit2
c:=StrTofloat(Edit3.Text); //Przypisanie zmiennej c nmienionego na liczbę rzeczywistą
//lańcucha znaków wpisanego w Edit3
except
ShowMessage ('Blad!proszę podac liczbę!'); //Wyswietlenie komunikatu o blędzie
end;
end;
//Obliczanie x1 i x2
Procedure TForm1.Button1Click(Sender: Tobject);
begin
test_bledow; //Wywolanie procedury obslugi bledów
d:=(b*b)-(4*a*c);
writeln('delta: ',d);
if (d<0) then
begin
writeln('brak pierwiastkow');
end
else if (d=0) then
begin
x1:=(-b/(2*a));
writeln('Pierwiastek: ',x1);
end
else
begin
x1:=(-b-sqrt(d))/(2*a);
x2:=(-b+sqrt(d))/(2*a);
writeln ('wielomian ma dwa miejsca zerowe: x1= ',x1:0:2,' i x2= ',x2:0:2);
end;
readln;
end;
end.