c++ Code was genau tut der

Daywalker1986

Ensign
Registriert
Apr. 2009
Beiträge
138
Nabend
Ich habe volgenden code

int spielfeld[3][3];
for (int n = 1; n < 10; n++)
{
spielfeld[(n%3) -1][n/3] = n;
cout << "\t" << n;
if (!(n%3)) cout << endl;
}

ich würde gerne wissen was der in den geschweiften Klammern genau tut, über eine Antwort würde ich mich sehr freuen

MfG Daywalker1986
 
Er soll wohl die Zahlen von 1 bis 9 in eine 3x3-Matrix schreiben, allerdings frage ich mich, was z.B. bei n=3 passiert...

*Edit: Ne, doch nicht, alles ok, ist schon spät...
 
Zuletzt bearbeitet:
Ganz einfach er zählt von 1 bis 9 in einer 3x3 Matrix. Sind das deine Info-Hausaufgaben?
 
ja so ungefähr, c++ grundlagen, vor 2 semestern die Klausur geschrieben und scho kein Plan mehr ^^
ich hab mich grad gefragt was das (n%3) genau macht bw die letzte Zeile, kann mir da grad keinen reim drauf bilden
 
% -> Modulo Operator

if (!(n%3)) cout << endl;

ist gleich

if ((n%3) == 0) cout << endl;

also, wenn n == 3, cout ...
 
int spielfeld[3][3];
Zweidimensionales Integer Array - per Default an jeder Stelle eine 0

for (int n = 1; n < 10; n++) {
beginn einer for-Schleife die von n=1 bis n=9 zählt

spielfeld[(n%3) -1][n/3] = n;
n%3 <- n Modulo 3....läuft also immer 0, 1, 2...0, 1, 2...0, 1 ,2...
n/3 <- Integer Division, also für n=0,1,2 ist n/3=0
Speichert letztendlich die Zahlen 1 bis 9 in dem Array

cout << "\t" << n;
Gibt einen Tabulator in der Eingabeauforderung aus

if (!(n%3)) cout << endl;
Gibt einen Zeilenumbruch in der Eingabeaufforderung aus (nach drei Zahlen)

Ende der for-Schleife
 
(n%3) - 1 läuft periodisch von (0..2) - 1 also -1..1
Meiner Meinung nach keine gute Idee negative Indizes zu verwenden (= undefined behaviour).
 
Verrückte Sache, ich hätte da zwei For-Schleifen eingebaut...
 
Mexxim schrieb:
passend zu deinem Avatar: Stop racism?!

absolut unpassender Beitrag ;)

Ich glaub das mit dem Holländer war eher ein Witz -.-
Ergänzung ()

wusu schrieb:
(n%3) - 1 läuft periodisch von (0..2) - 1 also -1..1
Meiner Meinung nach keine gute Idee negative Indizes zu verwenden (= undefined behaviour).

Allein schon dass da bei 1 angefangen wird zu zählen lässt mich am Programm zweifeln X) Ich zähle doch nicht von 1 bis 10 um dann ein Array von 0 bis 9 zu befüllen O.o und dann würd ich auch die Indizes andersherum wählen, [Feld][Spalte] halte ich nicht gerade für intuitiv O.o

int feldnr = 1;
int spielfeld[3][3];
for (int spalte = 0; spalte < 2; spalte++)
{
for (int feld = 0; feld < 2; feld++)
{
spielfeld[spalte][feld] = feldnr++;
}
}

Ist auf einen Blick zu kapieren und zu debuggen. Bei der Größe ders Arrays würde ich mir allerdings überlegen, ob ich die Werte nicht gleich beim Initialisieren reinschreibe:

int spielfeld[3][3] = {{1,2,3},{4,5,6},{7,8,9}};

Einfacher wirds doch eigentlich nicht ;)
 
Ich glaube der (einzige) Sinn an dem Code ist ja eben genau, eher unverständlich zu sein.
 
bu1137 schrieb:
Ich glaube der (einzige) Sinn an dem Code ist ja eben genau, eher unverständlich zu sein.

Kann sein. Kann auch sein, dass wer auch immer das geschrieben hat nicht viel Erfahrung hatte oder über den Durst getrunken hatte, vielleicht wars auch mal zur Fehleranalyse gedacht. Auf jeden Fall find ich die Struktur schon sehr eigenartig:

Array
(
[0] => Array
(
[0] => 1
[1] => 4
[2] => 7
)

[1] => Array
(
[0] => 2
[1] => 5
[2] => 8
)

[-1] => Array
(
[1] => 3
[2] => 6
[3] => 9
)

)
 
Zurück
Oben