Schleifen wiederholen
Hallo Zusammen.
Ich stoße mittlerweile ein Bisschen an meine Grenzen. Das Problem, ich will über einen Integer einen Wert eingeben, über welchen bestimmt wird, wie oft eine Schleife durchlaufen wird. Diese Schleifen können als Exponenten angesehen werden. Hier ein kleines Beispiel zu der manuellen Lösung des Problems:
Delphi-Quellcode:
Das ist so natürlich überaus unpraktisch. Ich kam nun auf die Idee eine Funktion entsprechend zu erstellen, jedoch bin ich auch nach längerem Überlegen nicht auf eine Lösung gekommen...
for z1 := 1 to 10 do
begin l12 := l11 +0.1; l11 := l11 + 0.1; for z2 := 1 to 10 do begin l13 := l12 + 0.1; l12 := l12 + 0.1; for z3 := 1 to 10 do begin l14 := l13 + 0.1; l13 := l13 + 0.1; for z4 := 1 to 10 do begin l15:= l14 + 0.1; l14:= l14 + 0.1; for z5 := 1 to 10 do .. Noch ein Hinweis, es werden maximal 20 Loops durchlaufen. Hat jemand vielleicht eine Idee? |
AW: Schleifen wiederholen
Warum hast du da tausend einzelne Variablen und kein Array?
|
AW: Schleifen wiederholen
Zitat:
|
AW: Schleifen wiederholen
Etwas in der Art?
Delphi-Quellcode:
procedure Machwas(AWieoft: Integer);
var LiLooper: Integer; begin for LiLooper := 1 to AWieoft do begin // end; end; |
AW: Schleifen wiederholen
Zitat:
|
AW: Schleifen wiederholen
Zitat:
Ob man
Delphi-Quellcode:
schreibt oder
l12 := l11 + 0.1
Delphi-Quellcode:
ändert an der Lesbarkeit nicht viel und man kommt dabei auch nicht mehr oder weniger durcheinander.
l[12] := l[11] + 0.1
Aber sei es so, wie du möchtest. Zitat:
Delphi-Quellcode:
Allerdings wird es dann immer noch nicht funktionieren, da deine Schleifen geschachtelt sind. Somit kannst du die Prozedur nicht iterativ aufrufen. Hier hilft meiner Ansicht nach nur ein rekursiver Aufruf, was aber nicht geht, weil du keinen Zähler für die Rekursionstiefe hast. Dafür müsstest du deine Werte in einem Array speichern.
procedure Machwas(AWieoft: Integer; Var L1, L2 : <Dein-Float-Typ>);
var LiLooper: Integer; begin for LiLooper := 1 to AWieoft do begin L1 := L2 + 0.1; L2 := L2 + 0.1; end; end; Also entweder feste Variablenbezeichner für deine Werte und deine geschachtelten Schleifen nehmen oder auf Array umstellen und rekursiv programmieren. Aber vielleicht fällt ja noch jemandem etwas besseres ein. |
AW: Schleifen wiederholen
Zitat:
Ich verzichte nicht im allgemeinen auf Arrays, sondern nur in diesem speziellen Fall. Das Problem sehe ich auch in der Verschachtelung und das ist der Punkt, an dem ich nicht weiterkomme. Nimm es mir bitte nicht übel, aber ich verstehe nicht ganz so viel der Informationstechnik. Ich selber bin auch nur kurzweilig gezwungen mich damit auseinander zusetzten. |
AW: Schleifen wiederholen
Zitat:
Rekursiv heißt, dass du eine Prozedur oder Funktion schreibst, die sich selbst wieder aufruft. Dafür brauchst du ein Kriterium, dass die Rekursion irgendwann abbricht. Bei einem Array könnte es die Arraygröße sein. Bei festen Variablen habe ich spontan keine Idee, wie man das sinnvoll realisieren kann. Daher bleibt nur deine Variante mit der Verschachtelung übrig. |
AW: Schleifen wiederholen
Zitat:
|
AW: Schleifen wiederholen
Zitat:
OK, Letzteres ist unünstiger, da der Compiler hier nicht schon alles prüfen kann und ein ungültiger Bezeichner erst zur Laufzeit knallen "kann" und natürlich auch die Codevervollständigung hier nicht hilft. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:50 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