Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Werte Tabelle Schleifen-Fehler (https://www.delphipraxis.net/159403-werte-tabelle-schleifen-fehler.html)

eugene222 26. Mär 2011 16:04

Delphi-Version: 5

Werte Tabelle Schleifen-Fehler
 
Hallo, ich habe die Aufgabe gekriegt eine Werte Tabelle für die Funktion f(x) = sin(x) * x² + 3/x.
Ich habe 3 Editfelder in die der Startwert, Endwert und die Schrittzahl.
Ich bin auch eig. schon fast fertig. Es funktioniert eig. alles, aber sobald man für die Schrittzahl einen etwas kleineren Wert nimmt(Wenn f_schritt < 0.5), läuft die Schleife Endloss weiter. Unser Lehrer hat aber gesagt, dass man für die Schrittzahl auch Float Werte nehmen kann.
Ich finde den Fehler einfach nicht, da das Program so ohne Fehler läuft.

Rechnung:
Code:
FUNCTION Tform1.Rechnung;
 BEGIN
  me_x.lines.Add(FloatToStr(f_start));
  Result := Sin(f_start)*sqr(f_start)+(3/f_start);
  me_y.Lines.Add(FloatToStr(Result));
 END;
Click Prozedur:
Code:
//Button-Click Prozedur
procedure TForm1.b_goClick(Sender: TObject);
 BEGIN
   //Die Editfelder den Variablen zuweisen
   f_start := StrToFloat(ed_start.Text);
   f_end := StrToFloat(ed_end.Text);
   f_schritt := StrToFloat(ed_Schritt.Text);
   me_x.Lines.Clear;
   me_y.Lines.Clear;
  ///////////////////////////////////////
  IF f_start<f_end THEN
   BEGIN
    repeat
     Rechnung;
     f_start := f_start + f_schritt;
    until f_start=f_end;
   END
  ELSE IF f_start>f_end THEN
   BEGIN
    repeat
     Rechnung;
     f_start := f_start - f_schritt;
    until f_start=f_end;
   END;
  Rechnung;
 END;

Uwe Raabe 26. Mär 2011 16:33

AW: Werte Tabelle Schleifen-Fehler
 
Zitat:

Zitat von eugene222 (Beitrag 1091166)
Unser Lehrer hat aber gesagt, dass man für die Schrittzahl auch Float Werte nehmen kann.

Hat euer Lehrer denn nicht auch gesagt, daß man Floatwerte niemals auf Gleichheit testen soll? Wegen der Ungenauigkeiten sind solche Vergleiche nicht zuverlässig. In deinen
Delphi-Quellcode:
until
Bedingungen solltest du stattdessn
Delphi-Quellcode:
<=
bzw.
Delphi-Quellcode:
>=
verwenden.

eugene222 26. Mär 2011 16:45

AW: Werte Tabelle Schleifen-Fehler
 
Eigentlich meinte Ich mit dem Satz, dass unser Leher meinte, dass die Schrittzahl ein Floatwert sein muss.

*edit*
Es funktioniert, vielen Dank!

Sir Rufo 26. Mär 2011 16:53

AW: Werte Tabelle Schleifen-Fehler
 
BTW
Delphi-Quellcode:
If Foo < EndWert then
  repeat
  ...
  until Foo >= EndWert;
Ist eigentlich
Delphi-Quellcode:
While Foo < EndWert do
  begin
  ...
  end;
Edit: korrigiert

Wolfgang Mix 26. Mär 2011 17:27

AW: Werte Tabelle Schleifen-Fehler
 
Sicher? So hat die Repeat-Until-Schleife nur 1 Durchlauf! Das würde auch ein einfaches IF erledigen.

Sir Rufo 26. Mär 2011 18:43

AW: Werte Tabelle Schleifen-Fehler
 
Hast ja recht ;) darum habe ich es auch schon geändert :)

Uwe Raabe 26. Mär 2011 18:48

AW: Werte Tabelle Schleifen-Fehler
 
Zitat:

Zitat von Sir Rufo (Beitrag 1091180)
BTW
Delphi-Quellcode:
If Foo < EndWert then
  repeat
  ...
  until Foo >= EndWert;
Ist eigentlich
Delphi-Quellcode:
While Not Foo < EndWert do
  begin
  end;
Edit: korrigiert

Du solltest das, was du da schreibst, nochmal gründlich überdenken! Jetzt stimmt nämlich fast gar nichts mehr...

Sir Rufo 26. Mär 2011 18:56

AW: Werte Tabelle Schleifen-Fehler
 
Oh Mann, ich muss das Zeug mal untersuchen lassen, was ich heute geraucht habe.

Jetzt sollte es aber passen (i hope) :stupid:

Wolfgang Mix 26. Mär 2011 20:04

AW: Werte Tabelle Schleifen-Fehler
 
:-)
Das Zeug würde ich auch gerne einmal testen :-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:44 Uhr.

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