2-dimensionale while-Schleife

max_1234

Captain
Registriert
Feb. 2012
Beiträge
3.682
Ich bin grad etwas überfragt und komm nicht mehr drauf, früher hab ich das schon öfters gepackt ...

Mein Ziel ist es, über while-Schleifen ein 2-dimensionales Feld zu füllen (x*y).
Früher hab ich die irgendwie verschachtelt .. aber nun ist mir das irgendwie zu hoch.
->x (x=4)
|01||02||03||04| y^ (y=4)
|05||06||07||08|
|09||11||12||13|
|14||15||16||17|

while x > 0
bla set 1 ... x=x-1 (...)

Nun möchte ich in die zweite Reihe übergehen. Hier ändert sich nur der y-wert.
Jedoch möchte ich nicht für jede Reihe eine while Schleife anlegen, da ich sonst in etwa 2000 Schleifen benötige.

Kann mir da jemand nochmal mit der Logik nachhelfen? :)

mfg
Max
 
Normalerweise verschachtelt man dafür 2 for-Schleifen und benutzt jeweils die Zählvariablen, um durch Zeilen und Spalten zu steppen.
 
Die SQF scripting engine kastriert viele möglichkeiten die "normalerweise" kein Problem wären :)
Deshalb mit verschachtelten while-Schleifen. Und genau hier scheitere ich zu später Stunde mit meiner Kreativität.

mfg,
Max
 
SQF?? Meinst du SQL?
oder was für eine Sprache ist das?
 
while (x>0)
Do
while (y>0)
Do
<Berechnungscode>
y=y-1
end while
x=x-1
end while

Kenne jetzt nicht die genaue Syntax aber so sollte es gehen.
Ist ja ne Matrix mit x Zeilen und Y Spalten
 
Zuletzt bearbeitet:
Dann führe einfach zwei Zählvariablen i,j ein die du in jeder Runde hochzählen lässt. Als Bedingung für die while Schleifen steht dann sowas wie i < n (j < m) wobei n,m die Dimensionen deines arrays sind.
 
Code:
int zahl = 1;
while(0 < y)
{
	while(0 < x)
	{
		zahl > output
		zahl++;
		x--;
	}
	y--;
}

Erst X-Achse abarbeiten und danach weiter an der Y-Achse nach unten gehen.

Edit:
Hier stand Unsinn :D
 
Zuletzt bearbeitet:
@the_nobs
SQF ist eine Scriptsprache von Arma und dem DayZ mod.
 
Habs nun mit ner verschachtelten for-Schleife gepackt :)

Jep .. Syntax ...
for [{_i = 0},{_i < _stackamounty},{_i = _i + 1}] do
{
for[{_j = 0},{_j < _stackamountx},{_j = _j + 1}] do
(...)

Danke nochmal!

mfg,
Max
 
Zurück
Oben