Solve quadratic equation

If you want to see a preview in the play store go here.

This code is helpful to solve quadratic equations with delphi!

unit TEqSecDeg;

interface

uses
System.SysUtils, System.Math, System.Generics.Collections;

type
TInequalitySolKind = (extsol, intsol, always, never, almostalways);

type
TQuadraticErr = class(Exception)
constructor Create(const errMsg: string);
end;

//main class that solves second degree equations
type
TEqSecDegree = class
private
//variables
a, b, c: double;
delta: double;
solRealCount: integer;
solImaginaryCount: integer;
class var currentIstances: integer;
class var totalIstances: integer;
//methods
function getDelta(const vala, valb, valc: double): double; overload;
public
constructor Create(const a, b, c: double); overload;
constructor Create(const a, b, c: string); overload;
destructor Destroy; override;
//methods
function getDecimal(const s: string): double; //fraction to decimal
function getDelta: double; overload;
function getSolutions(aList: TList): boolean; virtual;
class function toFraction(value: double): string;
//properties
property valueOfA: double read a;
property valueOfB: double read b;
property valueOfC: double read c;
property realSolutionsCount: integer read solRealCount;
property imaginarySolutionsCount: integer read solImaginaryCount;
class property currentEquationsCount: integer read currentIstances;
class property totalEquationsCount: integer read totalIstances;
end;

implementation

class function TEqSecDegree.toFraction(value: double): string;
var h1, h2, k1, k2, y, a, aux: double;
sign: string;
begin

//Setup the values
h1 := 1;
h2 := 0;
k1 := 0;
k2 := 1;
y := abs(value);

//Generates the fraction
repeat
begin
a := floor(y);
aux := h1;
h1 := a * h1 + h2;
h2 := aux;
aux := k1;
k1 := a * k1 + k2;
k2 := aux;
if (y – a = 0) or (k1 = 0) then break;
y := 1 / (y – a) ;
end;
until (Abs(abs(value) – h1 / k1) <= abs(value) * 0.000001); //Check if returning a - in front of the fraction if 'x' was < 0 if (value < 0) then begin sign := '-'; end else begin sign := ''; end; //Output if not(h1 = 0) then begin Result := sign + FloatToStr(h1) + '/' + FloatToStr(k1); end else begin Result := sign + '0'; end; end; { TEqSecGrado } constructor TEqSecDegree.Create(const a, b, c: double); begin //inherit from TObject inherited Create; //Set up the initial parameters Self.a := a; Self.b := b; Self.c := c; delta := 0; solRealCount := 0; solImaginaryCount := 0; Inc(currentIstances); Inc(totalIstances); end; constructor TEqSecDegree.Create(const a, b, c: string); begin //inherit from TObject inherited Create; //Set up the initial parameters Self.a := getDecimal(a); Self.b := getDecimal(b); Self.c := getDecimal(c); delta := 0; solRealCount := 0; solImaginaryCount := 0; Inc(currentIstances); Inc(totalIstances); end; destructor TEqSecDegree.Destroy; begin //Reset everything delta := 0; solRealCount := 0; solImaginaryCount := 0; Dec(currentIstances); //Destroy inheriting from TObject the method inherited; end; function TEqSecDegree.getDecimal(const s: string): double; var BarPos: integer; numStr, denomStr: string; x: double; begin BarPos := Pos('/', S); if (TryStrToFloat(s, x)) then begin Result := x; exit(); end; if BarPos = 0 then raise TQuadraticErr.Create('Fraction separator symbol "/" not found.'); numStr := Trim(Copy(S, 1, BarPos - 1)); denomStr := Trim(Copy(S, BarPos + 1, Length(S))); Result := StrToFloat(numStr)/StrToFloat(denomStr); end; function TEqSecDegree.getDelta: double; begin Result := delta; end; function TEqSecDegree.getDelta(const vala, valb, valc: double): double; begin Result := (valb*valb) - 4*vala*valc; end; function TEqSecDegree.getSolutions(aList: TList): boolean;
var tempDelta: double;
begin

try

aList.Clear;
delta := getDelta(a,b,c);

if (a <> 0) then
begin

if (delta >= 0) then
begin

aList.Add((-b + sqrt(delta))/(2*a));
aList.Add((-b – sqrt(delta))/(2*a));

//set solutions count
if (aList[0] <> aList[1]) then
begin
solRealCount := 2;
end
else
begin
solRealCount := 1;
end;

solImaginaryCount := 0;
Result := true;

end
else
begin

tempDelta := abs(delta);
aList.Add(-b/(2*a));
aList.Add(sqrt(tempDelta)/(2*a));
aList.Add(-b/(2*a));
aList.Add(-(sqrt(tempDelta)/(2*a)));

//set solutions count
if (aList[1] <> aList[3]) then
begin
solImaginaryCount := 2;
end
else
begin
solImaginaryCount := 1;
end;

solRealCount := 0;
Result := true;

end;

end
else
begin

//Raise exception when this is not a second degree equation
raise TQuadraticErr.Create(‘The first parameter “a” cannot be zero.’);

end;

except
Result := false;
end;

end;

{ TQuadraticErr }

constructor TQuadraticErr.Create(const errMsg: string);
begin
inherited Create(errMsg);
end;

end.

168 risposte a “Solve quadratic equation”

  1. Хочу поделиться опытом. Препарат для повышения потенции стал для моей семьи исцеляющим, волшебным средством. Направил в новое русло, вдохнул в нас жизнь. Сегодня почти любое лекарство можно приобрести по Интернету. Но не всегда это делать выгодно. При простуде проще дойти до привычной аптеки. Но что делать в случае, когда необходим препарат редкий, специфической направленности? Купить Виагру в Москве с доставкой на дом, например? Не хочется афишировать столь интимную проблему. Так вот, на сайте http://ofarma.ru факт совершения покупки останется гарантированной тайной. Здесь мы обнаружили много важной информации. Консультация специалиста заменила визит в медицинское учреждение.

    Расскажу свою историю. С супругом мы начали общаться в детском лагере, нам было всего по шестнадцать лет. В 18 – поженились. Удивительно, теперь нашей семье уже 25 лет! При том мы вполне еще молодые люди, желающие жить полноценной жизнью. Три месяца назад появились первые “звонки” мужской несостоятельности мужа. Глубокая депрессия, даже проблемы с алкоголем – я не узнавала своего благоверного. У нас взрослые дети, было сложно объяснить им причины перемен в поступках отца.

    [url=http://ofarma.ru/]купить виагру доставка по россии[/url]

    Как ни странно, но ключ от всех напастей крылся в знаменитом препарате. В тайне от него я приобрела Виагру. Долго готовила мужа, не знала, как предъявить ему мое решение столь деликатной задачи. И все-таки нашла нужные слова, супруг согласился. Время неумолимо, вернуться в юные года нельзя. Но начать жить по другому под силу каждому. И мы попробовали. Муж изменился, поверил в себя, почувствовал силу.

    Важно понять, что, начав принимать препарат, Вы не ставите крест на своей мужской состоятельности. Супруг принимал Виагру постоянно, вероятно, боялся фиаско. Но как-то раз, он попросту забыл выпить таблетку. Все прошло отлично! Вернулась уверенность, и это здорово. Продолжать пить или не пить препарат – каждый решает сам. Так как при необходимости купить Виагру в Москве с доставкой можно хоть сейчас. Это не так уж и тяжело.

  2. Paper Writing Service – EssayErudite.com

    We value excellent academic writing and strive to provide outstanding [url=https://essayerudite.com]paper writing services[/url] each and every time you place an order. We write essays, research papers, term papers, course works, reviews, theses and more, so our primary mission is to help you succeed academically.

    Don’t waste your time and order our paper writing service today!

    Best Essay Paper Writing Service -https://essayerudite.com

  3. [url=http://seorussian.ru]написание и продвижение сайтов[/url] – [url=http://seorussian.ru]seorussian.ru[/url]

  4. wh0cd6883059 [url=http://sildenafil2018.us.com/]sildenafil[/url] [url=http://seroquel4you.us.com/]100mg seroquel[/url] [url=http://glucophage4you.us.com/]glucophage medication[/url] [url=http://glucotrol4you.us.com/]GLUCOTROL[/url] [url=http://doxycycline365.us.org/]Doxycycline[/url] [url=http://lexapro911.us.com/]lexapro generic cost[/url] [url=http://lisinopril365.us.org/]lisinopril 2.5 mg[/url] [url=http://lasix4you.us.com/]lasix[/url] [url=http://retin-a4you.us.com/]home page[/url]

  5. wh0cd6883059 [url=http://bupropion4you.us.com/]bupropion cost[/url] [url=http://sildenafil2018.us.com/]viagra sildenafil citrate[/url] [url=http://amoxil4you.us.com/]Amoxil 250mg[/url] [url=http://doxycycline365.us.org/]Vibramycin[/url] [url=http://trazodone365.us.org/]trazodone generic[/url] [url=http://medrol4you.us.com/]Medrol Price[/url] [url=http://anafranil4you.us.com/]anafranil[/url] [url=http://kamagra4you.us.com/]generic kamagra[/url] [url=http://levitra911i.us.com/]levitra[/url] [url=http://cefixime4you.us.com/]Cefixime[/url] [url=http://vasotec4you.us.com/]vasotec enalapril[/url] [url=http://avodart4you.us.com/]generic avodart online[/url] [url=http://prednisone365.us.org/]prednisone[/url] [url=http://lasix365.us.org/]lasix[/url] [url=http://levitra4you.us.com/]buy levitra 20mg[/url]

  6. wh0cd6883059 [url=http://levaquin4you.us.com/]learn more here[/url] [url=http://atenolol4you.us.com/]atenolol[/url] [url=http://bupropion4you.us.com/]bupropion[/url] [url=http://prednisolone4you.us.com/]prednisolone 10 mg[/url] [url=http://sildenafil2018.us.org/]sildenafil citrate buy[/url]

  7. wh0cd6883059 [url=http://requip4you.us.com/]requip[/url] [url=http://cialis911.us.com/]cialis[/url] [url=http://kamagra911.us.com/]buy kamagra[/url] [url=http://furosemide4you.us.com/]furosemide[/url] [url=http://prednisolone4you.us.com/]PREDNISOLONE TABLETS[/url]

  8. Pingback: writeaessay

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.