AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

pq-Formel berechnen

Ein Thema von Plague · begonnen am 24. Nov 2003 · letzter Beitrag vom 24. Nov 2003
 
Benutzerbild von Seniman
Seniman

Registriert seit: 15. Sep 2003
Ort: Münster
98 Beiträge
 
#2

Re: pq-Formel berechnen

  Alt 24. Nov 2003, 19:07
Hallo Plague,

ich kann dir leider nicht sagen, wo genau der Fehler in deinem Quelltext steckt. Mir ist aber auch nicht ganz klar, nach welcher Formel genau du rechnest. Da du mit a,b und c rechnest sollte die Formel eigentlich

x=-b/(2a)+-sqrt((b*b-4*a*c)/(4*a*a))

sein. Entschuldige das häßliche Layout dieser Formel, aber es geht gerade nicht besser. Mit sqrt ist Wurzel gemeint.
Ich kann dir allerdings einige Tipps geben: Um das Quadrat von a und b auszurechnen, benutze besser die Multiplikation also a*a oder die Funktion sqr(a), beides gibt das Quadrat von a aus. Zum ziehen der Wurzel kannst du die Funktion sqrt(a) nehmen, das gibt die Wurzel von a aus.
Desweiteren würde ich dir empfehlen, nicht soviele Variablen einzuführen. Schließlich brauchst du sie nicht alle. Du kannst die Rechnungen ineinanderschachteln. Das spart Speicher und Zeit.
Zuletzt noch ein Hinweis: Wenn du wirklich die Quadratische Gleichung der Form ax²+bx+c=0 lösen willst, musst du vorher eine Fallunterscheidung machen, ob c=0 ist und dann noch ob gegebenenfalls b=0. Das Programm soll ja schließlich universell funktionieren, egal was der Benutzer eingibt.

So hab ich es gemacht, und das funktioniert:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var a,b,c,d: Real;
begin
a := strtoint(Edit1.Text);
b := strtoint(Edit2.Text);
c := strtoint(Edit3.Text);
if a<>0 then
  begin
  d :=(b*b-4*a*c)/(4*a*a);
  if d<0 then
    begin
      Label1.Caption:= 'Es gibt keine Lösung';
      Label2.Caption:= 'Es gibt keine Lösung';
    end
  else if d=0 then
    begin
      Label1.Caption := 'x= ' + floattostr(-b/(2*a));
      Label2.Caption := 'Keine weitere Lösung';
    end
  else if d>0 then
    begin
      Label1.Caption := 'x1= ' + floattostr(-b/(2*a)+Sqrt(d));
      Label2.Caption := 'x2= ' + floattostr(-b/(2*a)-Sqrt(d));
    end;
  end
else
  begin
    if b<>0 then
      begin
        Label1.Caption:= 'x= ' + floattostr(-c/b);
        Label2.Caption := 'Keine weitere Lösung';
      end
    else
      begin
        if c<>0 then
          begin
            Label1.Caption:= 'Es gibt keine Lösung';
            Label2.Caption:= 'Es gibt keine Lösung';
          end
        else
          begin
            Label1.Caption:= 'Jede Zahl ist Lösung';
            Label2.Caption:= '';
          end;
      end;
  end;

end;
Grüße
Seniman
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:45 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