quadratische Gleichung lösen:gelöst

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
jaslaz
Beiträge: 58
Registriert: Sa 28. Aug 2010, 18:30
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

quadratische Gleichung lösen:gelöst

Beitrag von jaslaz »

hi zusammen,
ich möchte ein programm entwickeln das quadratische Gleichungen löst (ax²+bx+c).

Ich hab überlegt das ich es so machen könnte.
Mein Problem ist die Formel:

Code: Alles auswählen

implementation
 
{ TForm1 }
 
procedure TForm1.Button1Click(Sender: TObject);
var a,b,c,x:real;
begin
a:=strtofloat(edit1.text);
b:=strtofloat(edit2.text);
c:=strtofloat(edit3.text);
x:= //Wie berechne ich X?
edit4.text:=floattostr(x1);
edit5.text:=floattostr(x2);
end;
 
initialization
Zuletzt geändert von jaslaz am Sa 11. Sep 2010, 11:56, insgesamt 1-mal geändert.

Euklid
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 10:38
OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
Wohnort: Hessen
Kontaktdaten:

Re: quadratische Gleichung lösen

Beitrag von Euklid »

jaslaz hat geschrieben:ich möchte ein programm entwickeln das quadratische Gleichungen löst (ax²+bx+c).
Ohach - sowas programmiere ich auch gerade :)
Ich hab überlegt das ich es so machen könnte.
Mein Problem ist die Formel:
x:= //Wie berechne ich X?
Anstatt x wäre es in der Tat gut, wenn Du x1 und x2 einführst, denn es gibt wirklich zwei Lösungen.

Zur Berechnung verwendest Du einfach die abc-Lösungsformel, die hier steht:
http://de.wikipedia.org/wiki/Abc-Formel ... ngsformeln" onclick="window.open(this.href);return false;

Wenn noch Fragen offen sind: Einfach posten.

Viele Grüße, Euklid

jaslaz
Beiträge: 58
Registriert: Sa 28. Aug 2010, 18:30
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: quadratische Gleichung lösen

Beitrag von jaslaz »

Euklid hat geschrieben: Wenn noch Fragen offen sind: Einfach posten.
Irgendwie rechnet er das nur aus, wenn c=0 ist.

woran kanns liegen?

Code: Alles auswählen

procedure TForm1.Button1Click(Sender: TObject);
var a,b,c,x1,x2:real;
begin
a:=strtofloat(edit1.text);
b:=strtofloat(edit2.text);
c:=strtofloat(edit3.text);
x1:=(-b+sqrt(sqr(b)- 4 * a * c))/2 * a;
x2:=(-b-sqrt(sqr(b)- 4 * a * c))/2 * a;
edit4.text:=floattostr(x1);
edit5.text:=floattostr(x2);
end;

Euklid
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 10:38
OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
Wohnort: Hessen
Kontaktdaten:

Re: quadratische Gleichung lösen

Beitrag von Euklid »

Ein kleiner Fehler hat sich eingeschlichen: Um 2*a muss eine Klammer drum, da durch beides geteilt wird.

Code: Alles auswählen

x1:=(-b+sqrt(sqr(b)- 4 * a * c))/(2 * a);
x2:=(-b-sqrt(sqr(b)- 4 * a * c))/(2 * a);
WICHTIG: Die Variable a darf nicht 0 sein. D.h. das musst Du vorher abfangen, ansonsten erhältst Du eine Division durch 0 - Error.

Ansonsten müsste das Ergebnis jetzt stimmen.

Viele Grüße, Euklid

jaslaz
Beiträge: 58
Registriert: Sa 28. Aug 2010, 18:30
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: quadratische Gleichung lösen

Beitrag von jaslaz »

Ich hab mein Programm jetzt mal Hochgeladen: http://rapidshare.com/files/418262657/Quadrat.rar

Es funzt immer noch nich!!!

Guck dir das mal bitte an Euklid

shokwave
Beiträge: 475
Registriert: Do 15. Nov 2007, 16:58
OS, Lazarus, FPC: Win11/Ubuntu Budgie (L 3.0 FPC 3.2.2)
CPU-Target: i386, x64
Wohnort: Gera

Re: quadratische Gleichung lösen

Beitrag von shokwave »

Hab es mir gerade mal angesehen. Was soll denn nicht gehen? Läuft bei mir prima.
Die Funktion "2x²" hat zwei mal 0 als Nullpunkte. "2x²-8" hat 2 und -2. Und bei "-4x²+5x+9" kommen -1 und 2,25 raus.

Wenn du natürlich Funktionen angibst, die keinen Nullpunkt haben ("2x²+7"), steht auch nix gescheites im Ergebnis. :mrgreen:
mfg Ingo

Euklid
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 10:38
OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
Wohnort: Hessen
Kontaktdaten:

Re: quadratische Gleichung lösen

Beitrag von Euklid »

Richtig, danke shokwave - hatte das ganz vergessen zu erwähnen:

jaslaz: Eine Lösung kann es natürlich nur geben, wenn b^2 größer ist als 4*a*c. Ansonsten wird der Radikant der Wurzel negativ, was reell nicht mehr zu lösen ist - vermute, hier liegt dein Problem.
Du kannst eine Fehlermeldung verhindern, indem Du vorher prüfst, ob b^2 wirklich größer ist als 4*a*c.

Viele Grüße, Euklid

jaslaz
Beiträge: 58
Registriert: Sa 28. Aug 2010, 18:30
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: quadratische Gleichung lösen

Beitrag von jaslaz »

Jo, danke!

hätt ich auch selbst drauf kommen können.

jetzt funzt es super!!!

Antworten