Forum
Öffentliche Foren |
FORUM: Spiele & Computer THEMA: 2dimensionales array | |||
AUTOR | BEITRAG | ||
DoomTheBrain
RANG Hardcore Sucker |
#1 - 14.11 02:04 hallo zusammenhabe ein zweidemensionales arry mit 592*592 felder. das feld ganz unten links ist 0. nacher zählt es nach rechts und dann zeile um zeile nach oben. das ganz oben rechts ist also das letze mit 592 * 592 - 1 jetzt habe ich zwei schlaufen int height = 592; int width = 592; for (int h = 0; h < height; h++) { for (int w = 0; w < width; w++) { //hier sollen die zahlen von oben links nach unten rechts durchgezählt werden. } } ich habe in der formel mal (((height-h)*width)-(width+w)-1)]); geschrieben unm das durchzuzählen und war mir auch sicher dass es gehen sollte. nur leider funktioniert es nicht. wo liegt mein fehler?? thx doom |
||
Crush (Anti Däääh)
RANG Master of Clanintern |
#2 - 14.11 04:04 definiere "nicht funktionieren". |
||
DoomTheBrain
RANG Hardcore Sucker |
#3 - 14.11 12:36 naja es zählt halt nich in der reihenfolge durch wie ich gerne hätte sondern irgendwie anders |
||
Morath
RANG Deckschrubber |
#4 - 14.11 12:52 also es soll eine Multiplikationstabelle werden?
Sowas in der Art? Dann setzt du den Wert in der inneren Schleife einfach per array[w][h] = w*h; HTH |
||
DoomTheBrain
RANG Hardcore Sucker |
#5 - 14.11 13:45 also i versuchs nochmals zu erklärendas array ist so durchnummeriert:
halt einfach bis 592 spalten und zeilen jetzt will ich das array durchlaufen und es soll einfach die zahlen ausgeben. dabei soll es allerdings links oben anfangen und dann zeile für zeile runterspringen. in diesem beispiel so 15 16 17 18 19 10 11 12 13 14 5 6 7 8 9 0 1 2 3 4 hoffe jetzt ist es klarer |
||
Morath
RANG Deckschrubber |
#6 - 14.11 15:21 und das array ist schon gefüllt?Das Ganze ist doch nur eine Frage des Startwerts der einzelnen Indices. Du willst zwar die Zeilen vorwärts durchlaufen, die Spalten aber rückwärts:
|
||
DoomTheBrain
RANG Hardcore Sucker |
#7 - 14.11 16:49 lol scheisse ja dankeich habe gar nie daran gedacht die schleife rückwärts laufen zu laseen danke |
||
Morath
RANG Deckschrubber |
#8 - 14.11 21:34 immer wieder gern :D |
||
DoomTheBrain
RANG Sucker |
#9 - 20.11 21:58 so noch eine aufgabe für dich die mit der oberen zusammenhängtsollte eine funktion haben die mir aus einem 4er block immer die linke untere ecke liefert. auf das beispiel oben angewandt (noch um eine spalte erweitert damit es quadratisch wird:
sollte dann das rauskommen: 12 14 16 0 2 4 komme einfach nicht darauf... :S |
||
Morath
RANG Deckschrubber |
#10 - 20.11 23:08 na so richtig schwer ist das aber auch nicht, eigentlich sollt ich dich noch etwas selber nachdenken lassen :-)Du willst hier beide Schleifen mit einer Schrittweite von 2 statt 1 durchlaufen, dadurch bekommst du für jede Zeile und jeder Spalte immer nur jeden zweiten Index. Dann musst du nur noch dafür sorgen, dass du mit den richtigen Startwerten beginnst. Wenn wie oben die Koordination 0,0 die linke untere Ecke sind, geht die Schleife für die Zeilen dann bei height - 2 (height - 1 ist der Index der obersten Zeile, du willst aber ja eine drunter anfangen und die oberste komplett überspringen) los, die für die Spalten bei 1 (entspricht 0 + 1, erste Spalte soll ja auch ausgelassen werden). Bei solchen Spielchen muss man auch immer noch sicherstellen, dass die Abbruchbedingung weiterhin passt, was sie hier aber wohl tut:
Die Schreibweise h -= 2 is ne Abkürzung für h = h - 2, analog w += 2, in beiden Fällen wird der Index der Zählervariablen um 2 verändert, d.h. immer ein Indexwert aus dem Array "übersprungen". |
||