Mit zweidimensionalen Arrays arbeiten
-
Kann es sein, dass so gehen muss?
int arr[10][10]; for (int i = 0; i < 10; ++i) for (int y = 0; y < 10; y++) arr[i][y] = y;lg, freakC++
edit: Ah, ok! Ich sehe erst jetzt deine Antwort. Dann hatte ich die richtige Idee

-
Hallo,
ich glaube jedoch, dass ich ein allgemeines Verständnisproblem bezüglich mehrdimensionalen Arrays habe. Ich habe folgende Deklaration:int arr[10][10];Bedeutet dies, dass ich zwei Arrays mit der Größe 10 habe, oder das ich 10 Arrays habe, an denen jeweils 10 Arrays hängen, also 100?
Vielen Dank
lg, freakC++
-
Du hast ein Zweidimensionales Array mit 10x10, also 100 Feldern. Versuch die felder doch mit irgendetwas zu füllen und das wieder auszugeben

-
Übrigens, dass es 100 Felder sind siehst du ja schon an deinem code mit 2 for schleifen.
-
stell dir ein 2D Array wie eine Exceltabelle vor
-
freakC++ schrieb:
Hallo,
ich glaube jedoch, dass ich ein allgemeines Verständnisproblem bezüglich mehrdimensionalen Arrays habe. Ich habe folgende Deklaration:int arr[10][10];Bedeutet dies, dass ich zwei Arrays mit der Größe 10 habe, oder das ich 10 Arrays habe, an denen jeweils 10 Arrays hängen, also 100?
So könnte man es ausdrücken
Vielen Dank
lg, freakC++Das sieht in etwa so aus:
5x5: Array[5][5]: Array[0][0] Array[0][1] Array[0][2] Array[0][3] Array[0][4] Array[1][0] Array[1][1] Array[1][2] Array[1][3] Array[1][4] Array[2][0] Array[2][1] Array[2][2] Array[2][3] Array[2][4] Array[3][0] Array[3][1] Array[3][2] Array[3][3] Array[3][4] Array[4][0] Array[4][1] Array[4][2] Array[4][3] Array[4][4]Der erste Index entspricht dem "äußeren" Array, der Zweite dem Inneren
Somit würdest du mit Array[0][1] das zweite Feld in der ersten Reihe ansprechen. (die Indizes eines Arrays beginnen mit 0, daher entspricht "1" dem zweiten Feld)
Wenn du wie oben eine Schleife und damit einen Index für das Array verwendest initialisierst du nur diese Felder im Array:
(5x5, wobei "o" für nicht initialisiert und "x" für initialisiert steht)xoooo oxooo ooxoo oooxo ooooxWeil du sowohl im äußeren, als auch im inneren Index um jeweils 1 erhöhst und somit sowohl in x als auch in y Richtung immer um 1 weiterspringst.
int arr[10][10]; for (int i = 0; i < 10; ++i) for (int y = 0; y < 10; y++) arr[i][y] = x*y;Dies funktioniert, weil du jede Zeile einzeln durchläufst und jedem Feld einen Wert zuweist.
-
Hallo,
vielen Dank für eure Antworten. Dann sollte das Verständnisproblem schon mal aus der Welt geschafft worden sein. Nur frage ich mich, wie ich die Größe der einzelnen Arrays festlege. Wenn ich mir so Ites Beschreibung anschaue, dann sieht man gut die 25 Arrays. Doch wie groß ist den das einzelne? Wie viele Elemente kann ich beispielsweise in "Array[3][4]" packen?Vielen Dank für eure Hilfe
lg, freakC++
-
freakC++ schrieb:
Wie viele Elemente kann ich beispielsweise in "Array[3][4]" packen?
Wenn du vier 3er-Packungen Äpfel kaufst, wieviele Äpfel hast du dann?
-
MFK schrieb:
freakC++ schrieb:
Wie viele Elemente kann ich beispielsweise in "Array[3][4]" packen?
Wenn du vier 3er-Packungen Äpfel kaufst, wieviele Äpfel hast du dann?

-
Nein, du hast da was missverstanden. Was Ite mit z.B. Array[3][4] meint ist ein element des Array, es ist kein ganzes Array (hört sich verwirrend an).
Probier mal den folgenden Code aus:int arr[10][10]; for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { arr[i][j] = 0; } } arr[4][9] = 1; for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { cout << arr[i][j] << ", "; if (j == 9) cout << endl; } }Hier siehst du alle Elemende des 10x10 array. Sie werden anfangs mit 0en gefüllt, dann wird das element [4][9] auf 1 gesetzt und anschliessend gibt man alles aus. Ist in etwa das, was Ite meinte.
-
MFK schrieb:
freakC++ schrieb:
Wie viele Elemente kann ich beispielsweise in "Array[3][4]" packen?
Wenn du vier 3er-Packungen Äpfel kaufst, wieviele Äpfel hast du dann?
Nur dass es in dem Fall Array[3][4] nicht vier 3er Packungen, sondern drei 4er Packungen sind.
Somit kann man in diesem Array 3 mal 4 Felder unterbringen.
Mit dem Beispiel auf Seite 1 wollte ich nur zeigen wie die Indizes für das jeweilige Datenfeld in dem Array aussehen würden.
Ein Datenfeld in einem Array kann jeder beliebige Datentyp sein.Z.B. bei int ar[2][2] hätte man ein Array aus Integern, was so aussehen könnte:
2,5
6,8
bei char ar[2][2] wären es Zeichen:
z,u
e,rSieh dir am Besten noch ein paar Tutorials zu dem Thema an