![]() |
Schleifen-Problem
Entschuldigt bitte, wenn ähnliche Posts bereits tausendfach irgendwo gepostet wurden, allerdings konnte ich nirgendwo eine Lösung für mein Problem finden. Ich bin, was Lazarus/Delphi angeht, ein ziemlicher Neuling. In meinem Info-Kurs hatten wir die Aufgabe eine in einem Edit-Feld stehende Zahl mit einer weiteren in einem zweiten Edit-Feld stehenden Zahl zu potenzieren. Dabei sollten wir einmal eine for-, eine while- und eine repeat-until-Schleife verwenden. Das mit der For-Schleife hat soweit auch zufriedenstellend funktioniert. Ich weiß aber nicht wirklich, wie die anderen beiden funktionieren sollen (Ich habe wirklich verdammt lange überlegt und komme alleine nicht so wirklich weiter).
Delphi-Quellcode:
Vielen Dank schon mal für eure Hilfe! :)
procedure TForm1.Button1Click(Sender: TObject);
Var a:double; c: double; i: integer; begin a:=strtofloat(edit1.text); c:=1; for i:=1 to strtoint(edit2.text)do begin c:=c*a; end; edit3.text:=floattostr (c); end; |
AW: Schleifen-Problem
Wenn ich das richtig verstanden habe, ungefähr so (sicher nicht perfekt, aber funktioniert und für einen Info-Kurs völlig ausreichend):
Delphi-Quellcode:
// for
procedure TForm1.Button1Click(Sender: TObject); var a, c: Double; i: Integer; begin a := StrToFloat(Edit1.Text); c := 1; for i := 1 to StrToInt(Edit2.Text) do begin c := c * a; end; Edit3.Text := FloatToStr(c); end; // while procedure TForm1.Button2Click(Sender: TObject); var a, c: Double; i: Integer; begin a := StrToFloat(Edit1.Text); c := 1; i := 0; while i < StrToInt(Edit2.Text) do begin inc(i); c := c * a; end; Edit3.Text := FloatToStr(c); end; // repeat procedure TForm1.Button3Click(Sender: TObject); var a, c: Double; i: Integer; begin a := StrToFloat(Edit1.Text); c := 1; i := 0; repeat inc(i); c := c * a; until i = StrToInt(Edit2.Text); Edit3.Text := FloatToStr(c); end; |
AW: Schleifen-Problem
Ich wollte eigentlich erstmal das Grundproblem angehen.
Eine For-Schleife ist ja im Grunde eine While-Schleife (oder Repeat mit vorherrigem IF). Du mußt dir einfach nur mal überlegen was eine For-Schleife eigentlich macht. - es initialisiert die Schleifen-Variable mit dem Startwert - prüft die Abbruchbedingung (vergleichen mit Endwert) - und erhöht nach jedem Durchgang den Wert der Variable Und schon hast du den Codes für das While zusammen. Beim Repeat wird der Wert am ende der Schleife geprüft und während beim While darauf beprüft wird, ob in die Schleife reingesprungen wird, wird beim Repeat auf den Abbruch der Schleife geprüft. Dementsprechend muß man die Prüfung umbauen und auch darauf achten, daß dort auf den Endwert erst nachträglich geprüft wird. @EineFrage: Beachte mal, bei deinem Code, daß man in Edit2 auch eine 0 oder sogar eine negative Zahl eingeben könnte ... also nicht wundern, wenn die Repeat-Variante dort ein anderes Ergebnis liefert. |
AW: Schleifen-Problem
Die Videos sind auf Englisch; es schadet ja nicht beim Lernen von Pascal gleichzeitig seine Englischkenntnisse zu verbessern. 8-)
while .. do ![]() repeat ... until ![]() for ... do ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15: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