Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi delphi probleme....pq (https://www.delphipraxis.net/102047-delphi-probleme-pq.html)

wuschi 22. Okt 2007 18:28


delphi probleme....pq
 
so ich soll für die schule die pq-formel als prog schreiben...hab jetzt auch was gemacht aber das funzt nicht wirklich^^
kann mir mal jemand helfen denn ich weiß absolut nicht mehr weiter
Delphi-Quellcode:
procedure TForm1.startClick(Sender: TObject);
var p,q,x1,x2,wurzel,z : extended ;
  begin
    if
      sqrt(p*p/4-q) < 0
      then
        keine.Visible := True
      else
      begin
        if
          sqrt(p*p/4-q) = 0
          then
          begin
            wurzel := sqrt(p*p/4-q);
            z := p/2*-1;
            x1loesung.Visible := True;
            x1loesung.Caption := floattostrf(z,ffFixed,2,2);
          end
          else
            if
            sqrt(p*p/4-q) >0
              then
              begin
                x1:= z+wurzel;
                x2:= z-wurzel;
                x1loesung.Visible := True;
                x1loesung.Caption := floattostrf(x1,ffFixed,2,2);
                x2loesung.Visible := True;
                x2loesung.Caption := floattostrf(x2,ffFixed,2,2);
              end
  end;
  end;

[edit=Matze][delphi]-Tags gesetzt. Zukünftig bitte selbst einfügen. MfG, Matze[/edit]

Nuclear-Ping 22. Okt 2007 18:31

Re: delphi probleme....pq
 
Standardfrage: Was funktioniert denn nicht so wie gedacht? Weil "funktioniert nicht so richtig" ist keine Fehlerbeschreibung. Es es ein mathematisches oder ein Sprachproblem?

Und du kannst nicht erwarten, dass hier jemand deinen Code nimmt, kopiert und ihn dir korrigiert wieder hierreinstellt. Wenn es doch jemand macht, hast du Glück gehabt. Gelernt hast du dabei aber nix.

wuschi 22. Okt 2007 18:37

Re: delphi probleme....pq
 
alsoooo...erstmal kommen unten die hinweise von delphi dass
[Hint] Unit1.pas(53): Value assigned to 'wurzel' never used
und dann noch die meldungen dass die variablen q,p,z,wurzel nicht initialisiert wurden
das programm lässt sich jedoch dennoch starten und ich kann die gewünschten zahlen eingeben, wenn ich jedoch dann auf den start button klicke kommt eine fehlermeldung, die lautet:
procejt1.exe raised exceptionclass EinvalidOpwith message "ibvalid floating point operation" dann wennman auf ok klickt öffnet sich der debugger doch wenn ich bei dem einen schritt vorwärst gehe geht er zum ende und dann kommt die fehlermeldung:invalid floating point operation

DeddyH 22. Okt 2007 18:38

Re: delphi probleme....pq
 
Delphi-Quellcode:
procedure TForm1.startClick(Sender: TObject);
var p,q,x1,x2,wurzel,z : extended ;
  begin
    //p und q sind nicht initialisiert, reiner Zufall, was hier rauskommt
    if
      sqrt(p*p/4-q) < 0
      then
        keine.Visible := True
      else
      begin
        if
          sqrt(p*p/4-q) = 0
          then
          begin
            wurzel := sqrt(p*p/4-q); //Berechnung von Wurzel wird nicht verwendet
            z := p/2*-1;
            x1loesung.Visible := True;
            //Und wo bleibt hier die Wurzel? Umsonst gerechnet, s.o.
            x1loesung.Caption := floattostrf(z,ffFixed,2,2);
          end
          else
            if
            sqrt(p*p/4-q) >0 //Abfrage unnötig, da die anderen beiden Fälle bereits behandelt wurden
              then
              begin
                x1:= z+wurzel; //wurzel hat einen undefinierten Wert
                x2:= z-wurzel; //dto.
                x1loesung.Visible := True;
                x1loesung.Caption := floattostrf(x1,ffFixed,2,2);
                x2loesung.Visible := True;
                x2loesung.Caption := floattostrf(x2,ffFixed,2,2);
              end
  end;
  end;

Nikolas 22. Okt 2007 18:41

Re: delphi probleme....pq
 
a) Du musst die Variablen initialisieren
b) Für welche Zahl x soll denn bitte sqrt(x) kleiner als Null sein? Willst du vielleicht testen, ob das Argument kleiner als Null ist, bevor du die Wurzel ziehst?

// Ach ja: 'Delphi Problem' ist in einem Delphi Forum nicht wirklch hilfreich :wall:

Nuclear-Ping 22. Okt 2007 18:42

Re: delphi probleme....pq
 
Ah, das sah auf die ersten zwei Blicke so aus, als ob p, q, ... mit als Funktionsparameter gehörten.

Die ganzen Variablen da musst du natürlich zuweisen. Wie Deddy schon geschrieben hat: Woher soll Delphi wissen was p, q, ... ist, wenn du die Werte aus der Eingabe nicht zuweist?

Schau dir mal strtoint bzw. strtofloat an. Oder TryStrToInt, TryStrToFloat, ...

wuschi 22. Okt 2007 19:10

Re: delphi probleme....pq
 
se vieeeeeeelen dank an euch alle...nach euren tipps funktioniert das hier endlich zumindest fast^^
das einzigste was jetzt noch nicht funktioniert ist dass delphi anzeigt wenn es keine lösung gibt...dann kommt immer diese fehlermeldung
hat vll noch jemand eine idee?

DeddyH 22. Okt 2007 19:12

Re: delphi probleme....pq
 
Welche Fehlermeldung?

wuschi 22. Okt 2007 19:17

Re: delphi probleme....pq
 
die die ich oben schon einmal hingeschrieben habe in einem beitrag von mir...die mit invalid floating point operation

BUG 22. Okt 2007 19:43

Re: delphi probleme....pq
 
Hallo wuschi,

Delphi-Quellcode:
wurzel := sqrt(p*p/4-q);
Hier (oder danach) tritt der Fehler auf, oder?

Wenn die Formel keine Lösung besitzt, ist p*p/4-q negativ. Wie groß ist die Wurzel aus -1 :mrgreen:

Du musst also den Fall abfangen, das p*p/4-q < 0 ist und in diesem Fall die weitere Verarbeitung abbrechen und "keine Lösungen" ausgeben.

MfG,
Bug


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:49 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