PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Schleife mit mehreren "iterations-variablen"



Bensch
10.02.2009, 15:41
Hallo,

ich möchte eine Schleife bauen, in der in jedem Schleifendurchlauf nicht nur die eigentliche Schleifenvariable I, sonder auch ein weiterer Integer J verändert wird. Bei den 3 Durchläufen soll sein:
I=1, J=1
I=2, J=5
I=3, J=9

Ich habe das jetzt folgendermaßen gelöst:


For I = 1 To 3
Select Case I
Case 1
J = 1
Case 2
J = 5
Case 3
J = 9
End Select

*Befehle, die I und J benutzen*

Next I


geht das auch eleganter, zB mit zwei variablen direkt in der for-zeile?

Beste Grüße,
Benjamin

PicNick
10.02.2009, 16:00
"FOR" (bei Bascom) geht nur mit einer Variable
Anders geht's aber natürlich immer, z.B:


For I = 1 To 3
J = LOOKUP( I , FOR_TAB)
*Befehle, die I und J benutzen*
Next I

FOR_TAB:
DATA 0, 1, 5, 9

Bensch
10.02.2009, 16:07
das sieht auf jeden fall schonmal kompakter aus. Ich werds erstmal so umsetzen, danke!

for_ro
10.02.2009, 18:15
J=1
For I = 1 To 3
*Befehle, die I und J benutzen*
j=j+4
Next I

Das geht für deine Zahlen natürlich auch.

Gruß

Rolf

Duke of Doom
10.02.2009, 18:16
gibt es keine möglichkeit j aus i zu berechnen:

zb: j = 1 + i * 4

i=1 --> j=1
i=2 --> j=5
i=3 --> j=9

ich wieß nicht wie die folge wieter geht aber für die drei Fälle stimmt die Formel

Bensch
10.02.2009, 18:39
die folge geht garnicht weiter, bei I=3 ist bei mir schluss.
Ich hab nicht wirklich eine idee, wie ich die verschiedenen varianten bewerten soll, ich schätze mal, dass die von for_ro am schnellsten läuft... also werd ich die wohl auch nehmen.

Danke nochmal für eure Hilfe,

Benjamin

PicNick
10.02.2009, 18:49
Da ist ein Unterschied zwischen elegant und schnell

Bei nur 3 Fällen ist am schnellsten, wenn es auch barbarisch aussieht


I = 1
J = 1
gosub I_J_ROUTINE
I = 2
J = 5
gosub I_J_ROUTINE
I = 3
J = 9
gosub I_J_ROUTINE


Die "FOR" Konstruktion und das Berechnen von J braucht mehr Code, als man glaubt.