![]() |
Quadratische Gleichung lösen
Hallo,
ich versuche mich gerade an einem Programm was eine Quadratische Gleichung in der Form ax² + bx + c = 0 lösen kann. Ich habe es versucht und das Programm lässt sich auch ausführen doch wenn ich eine Berechnung starten will kommt eine Fehlermeldung und zeigt keine Lösung(en) an. Vielleicht könnt ihr mir ja helfen. Vielen Dank schonmal im Vorraus. Hier ist mein Quellentext:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var a, b, c, Diskriminante, Ls1, Ls2: Real; LoesungText1, LoesungText2: String; begin //Eingabe; Umwandlung in Reele Zahlen a := StrToFloat(Edit1.Text); b := StrToFloat(Edit2.Text); c := StrToFloat(Edit3.Text); //Überprüfen ob es eine Quadratische Gleichung ist if a = 0 then Label6.Caption := 'Keine Quadratische Gleichung!' else //wenn es eine quadr. Gleichung ist, Gleichung lösen begin Diskriminante := b*b - 4*a*c; //Überprüfen ob es eine Lösung gibt if Diskriminante < 0 then Label6.Caption := 'Keine Lösung möglich!' else //Überprüfen ob es eine oder zwei Lösungen gibt if Diskriminante = 0 then //Einzigste Lösung berechnen begin Label6.Caption := 'Es gibt nur eine Lösung!'; Ls1 := - b / (2*a); LoesungText1 := FloatToStr(Ls1); end else //Zwei Lösungen berechnen Ls1 := (- b + sqrt(Diskriminante)) / (2*a); Ls2 := (- b - sqrt(Diskriminante)) / (2*a); LoesungText1 := FloatToStr(Ls1); LoesungText2 := FloatToStr(Ls2); end; LoesungText1 := Edt_x1.Text; LoesungText2 := Edt_x2.Text; end; end. |
Re: Quadratische Gleichung lösen
Willst du es nicht einfach mit der p q formel machen?
Gruß Alexander |
Re: Quadratische Gleichung lösen
Ich würde an deiner Stelle deutlich mehr begin - end setzen. Dein letztes else kommt mir falsch vor, da der Block danach zusammenhängt.
Edit: Ob Mitternachtsformel, die ich auch genommen hätte, oder PQ-Formel ist doch grad egal. ;) Bis vor 2 Minuten kannte ich die PQ-Formel nicht mal. *g* |
Re: Quadratische Gleichung lösen
Zitat:
Gruß Alexander PS: @alanblack: EINRÜCKUNG!!! |
Re: Quadratische Gleichung lösen
Delphi-Quellcode:
Klappt grob.
{-----------------------------------------------------------------------------
Description: Procedure: Button1Click Arguments: Sender: TObject Result: None Detailed description: -----------------------------------------------------------------------------} procedure TForm1.Button1Click(Sender: TObject); var a, b, c, Diskriminante, Ls1, Ls2: Real; LoesungText1, LoesungText2: String; begin //Eingabe; Umwandlung in Reele Zahlen a := StrToFloat(Edit1.Text); b := StrToFloat(Edit2.Text); c := StrToFloat(Edit3.Text); //Überprüfen ob es eine Quadratische Gleichung ist if a = 0 then Label6.Caption := 'Keine Quadratische Gleichung!' else //wenn es eine quadr. Gleichung ist, Gleichung lösen begin Diskriminante := b*b - 4*a*c; //Überprüfen ob es eine Lösung gibt if Diskriminante < 0 then Label6.Caption := 'Keine Lösung möglich!' else begin //Überprüfen ob es eine oder zwei Lösungen gibt if Diskriminante = 0 then //Einzigste Lösung berechnen begin Label6.Caption := 'Es gibt nur eine Lösung!'; Ls1 := - b / (2*a); LoesungText1 := FloatToStr(Ls1); end else //Zwei Lösungen berechnen begin Label6.Caption := '2 Lösungen!'; Ls1 := (- b + sqrt(Diskriminante)) / (2*a); Ls2 := (- b - sqrt(Diskriminante)) / (2*a); LoesungText1 := FloatToStr(Ls1); LoesungText2 := FloatToStr(Ls2); end; end; end; self.EditL1.Text:=LoesungText1; self.EditL2.Text:=LoesungText2; end; Muss jetzt essen. Tschüss Alexander |
Re: Quadratische Gleichung lösen
Hey
Vielen Dank funktioniert sehr gut :-) Schönen Abend noch |
Re: Quadratische Gleichung lösen
Gleichfalls.
Gruß Alexander :hi: |
Re: Quadratische Gleichung lösen
wenn man statt abc die pq formel nimmt, kommen meiner meinung nach ganze 2 zeilen dazu:
p=b/a; q=c/a; fertig |
Re: Quadratische Gleichung lösen
Ich verstehe jetzt nicht ganz was du ansprichst, aber fertige Lösungen gibt es kurz und bündeig bereits
![]() Falls man so schöne Meldungen haben will, muss man natürlich noch abfangen, ob es unter der wurzel <0 wird oder nicht. Gruß Alexander |
Re: Quadratische Gleichung lösen
Ist es nicht etwas gefährlich auf '=0' zu prüfen? Ein Iszero dürfte dort darstellungsbedingte Fehler vermeiden. (Und bitte noch das 'einzigste' entfernen... :mrgreen: )
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:12 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz