Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Quadratische Gleichung lösen (https://www.delphipraxis.net/84840-quadratische-gleichung-loesen.html)

alanblack 22. Jan 2007 16:51


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.

Alexander Roth 22. Jan 2007 16:53

Re: Quadratische Gleichung lösen
 
Willst du es nicht einfach mit der p q formel machen?

Gruß Alexander

Matze 22. Jan 2007 16:55

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*

Alexander Roth 22. Jan 2007 17:24

Re: Quadratische Gleichung lösen
 
Zitat:

Zitat von Matze
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*

Der Vorteil der abc Formel ist halt das es 2 Zeilen Code, anstatt 30 sind. :wink:

Gruß Alexander

PS: @alanblack: EINRÜCKUNG!!!

Alexander Roth 22. Jan 2007 17:34

Re: Quadratische Gleichung lösen
 
Delphi-Quellcode:
{-----------------------------------------------------------------------------
  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;
Klappt grob.

Muss jetzt essen.

Tschüss

Alexander

alanblack 22. Jan 2007 19:02

Re: Quadratische Gleichung lösen
 
Hey

Vielen Dank funktioniert sehr gut :-)

Schönen Abend noch

Alexander Roth 22. Jan 2007 21:08

Re: Quadratische Gleichung lösen
 
Gleichfalls.

Gruß Alexander :hi:

dino 22. Jan 2007 22:41

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

Alexander Roth 23. Jan 2007 13:24

Re: Quadratische Gleichung lösen
 
Ich verstehe jetzt nicht ganz was du ansprichst, aber fertige Lösungen gibt es kurz und bündeig bereits hier
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

Nikolas 23. Jan 2007 16:04

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 17:46 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz