ten eerste:
Delphi 6 is geen taal maar een ontwikkelomgeving... Object Pascal is de taal die Delphi gebruikt (en de versie maakt weinig uit, behalve als je natuurlijk met een extreem oude versie als Delphi 1 zou werken wat betreft geheugentoewijzing en de grootte van bepaalde types)
ten tweede:
abc-formule, gekke benaming: in België heet dat gewoon de discirminantsformule
ten derde:
bedoel je een functie om x uit te rekenen??
dan schud ik deze eventjes uit mijn mouw (nooit aan gedacht eigenlijk om zoiets in Delphi te steken)
Let er wel op: hiermee krijg je kommagetallen en GEEN wortelvorm of breuk. Daarnaast is Object Pascal niet de aangewezen taal om berekeningen mee te maken omdat het allesbehalve correct is bij reële getallen, als je dus echt perfect moet kunnen vertrouwen op de uitvoer moet je een andere taal (Fortran, Matlab, ...) gebruiken
Code:
function abc(const a,b,c:real;const plus:boolean=true):real;
begin
if plus
then abc:= (b + sqrt(sqr(b) - 4*a*c)) / (2*a)
else abc:= (b - sqrt(sqr(b) - 4*a*c)) / (2*a);
end;
Om het gewenste resultaat te krijgen moet je de functie tweemaal doorlopen, de ene keer geef je als plus true mee of geen waarde en de tweede keer geef je als plus false mee. Ik hoop dat de betekenis hiervan toch een beetje duidelijk is.
Korte verklaing van de werkwijze:
SQRT : vierkantswortel
SQR : kwadraat
bij delingen met / altijd real als resultaat
goed letten op de haakjes (beter te veel dan te weinig!)
let er op dat A geen 0 is, want ik heb hiervoor de exception niet bijgevoegd (dat moet je zelf maar opvangen in je programma)