![]() |
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] |
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. |
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 |
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; |
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: |
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, ... |
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? |
Re: delphi probleme....pq
Welche Fehlermeldung?
|
Re: delphi probleme....pq
die die ich oben schon einmal hingeschrieben habe in einem beitrag von mir...die mit invalid floating point operation
|
Re: delphi probleme....pq
Hallo wuschi,
Delphi-Quellcode:
Hier (oder danach) tritt der Fehler auf, oder?
wurzel := sqrt(p*p/4-q);
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 06:17 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 by Thomas Breitkreuz