//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
	: TForm(Owner)
{
}

TRownanieKwadratowe::TRownanieKwadratowe(double a,double b,double c)
	:TObject()
{
	this->a=a;
	this->b=b;
	this->c=c;
}

double TRownanieKwadratowe::Delta() const
{
	return b*b-4*a*c;
}

void TRownanieKwadratowe::SetA(double a)
{
	if (a!=0) Fa=a;
	else throw Exception("Wspolczynnik a nie moze byc rowny zero!");
}

double TRownanieKwadratowe::GetX1() const
{
	return (-b-Sqrt(Delta()))/(2*a);
}

double TRownanieKwadratowe::GetX2() const
{
	return (-b+Sqrt(Delta()))/(2*a);
}

bool TRownanieKwadratowe::Rozwiazanie(double a,double b,double c,double& x1,double& x2)
{
	TRownanieKwadratowe* prk=0;
	bool wynik;
	try
	{
		prk=new TRownanieKwadratowe(a,b,c);
		x1=prk->X1;
		x2=prk->X2;
		wynik=true;
	}
	catch(...)
	{
		wynik=false;
	}
	delete prk;
	return wynik;
}

//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
	TRownanieKwadratowe* prk=new TRownanieKwadratowe(1,1,-2);
	ShowMessage("Rozwiązania: x1="+FloatToStr(prk->X1)+", x2="+FloatToStr(prk->X2));
	delete prk;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
	double x1,x2;
	if (TRownanieKwadratowe::Rozwiazanie(1,1,-2,x1,x2))
		ShowMessage("Rozwiązania: x1="+FloatToStr(x1)+", x2="+FloatToStr(x2));
	else
		ShowMessage("Równanie nie ma rozwiązań w dziedzinie liczb rzeczywistych");
}
//---------------------------------------------------------------------------
