Mehrdimensionale Arrays in C

Hallo da draußen, zukünftige Programmierer! Heute begeben wir uns auf eine aufregende Reise in die Welt der mehrdimensionalen Arrays in C. Machen Sie sich keine Sorgen, wenn Sie neu im Programmieren sind – ich werde Ihr freundlicher Guide sein, und wir werden dieses Thema Schritt für Schritt angehen. Am Ende dieses Tutorials werden Sie ein Profi im Umgang mit diesen leistungsstarken Datenstrukturen sein!

C - Multi-Dimensional Arrays

Mehrdimensionale Arrays in C

Lassen Sie mit den Grundlagen beginnen. Stellen Sie sich vor, Sie haben eine Menge von Kisten, und in jeder Kiste sind mehr Kisten. Das ist im Wesentlichen, was ein mehrdimensionales Array ist – eine Möglichkeit, Daten in mehreren Ebenen oder Dimensionen zu organisieren.

In C können wir Arrays mit mehr als einer Dimension erstellen. Die häufigsten Typen sind 2D (zweidimensional) und 3D (dreidimensional) Arrays, aber theoretisch können Sie so viele Dimensionen haben, wie Ihr Computer-Speicher zulässt!

Hier ist eine einfache Möglichkeit, ein 2D-Array zu deklarieren:

int matrix[3][4];

Dies erstellt ein 2D-Array namens matrix mit 3 Zeilen und 4 Spalten. Denken Sie daran als ein Raster oder eine Tabelle mit 3 Zeilen und 4 Spalten.

Zweidimensionales Array in C

Lassen Sie uns tiefer in 2D-Arrays mit einem praktischen Beispiel eintauchen. Stellen Sie sich vor, Sie erstellen ein einfaches Spielbrett für Tic-Tac-Toe:

#include <stdio.h>

int main() {
char board[3][3] = {
{'_', '_', '_'},
{'_', '_', '_'},
{'_', '_', '_'}
};

// Das Brett ausgeben
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 3; j++) {
printf("%c ", board[i][j]);
}
printf("\n");
}

return 0;
}

In diesem Beispiel erstellen wir ein 3x3 Brett für Tic-Tac-Toe. Jede Zelle wird mit einem Unterstrich '_' initialisiert, um einen leeren Raum darzustellen. Wir verwenden verschachtelte Schleifen, um das Brett auszugeben.

Die äußere Schleife for(int i = 0; i < 3; i++) iteriert durch jede Zeile, während die innere Schleife for(int j = 0; j < 3; j++) durch jede Spalte in dieser Zeile iteriert.

Dreiimensionales Array in C

Nun steigen wir eine Stufe höher und erkunden 3D-Arrays. Stellen Sie sich vor, Sie gestalten eine einfache 3D-Spielwelt:

#include <stdio.h>

int main() {
int gameWorld[2][3][4] = {
{{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}},
{{13, 14, 15, 16}, {17, 18, 19, 20}, {21, 22, 23, 24}}
};

// Die Spielwelt ausgeben
for(int i = 0; i < 2; i++) {
printf("Level %d:\n", i+1);
for(int j = 0; j < 3; j++) {
for(int k = 0; k < 4; k++) {
printf("%2d ", gameWorld[i][j][k]);
}
printf("\n");
}
printf("\n");
}

return 0;
}

Hier erstellen wir ein 3D-Array gameWorld mit 2 Ebenen, jede Ebene hat 3 Zeilen und 4 Spalten. Sie können sich das als zwei 2D-Gitter stapeln vorstellen.

Wir verwenden drei verschachtelte Schleifen, um diese 3D-Welt auszugeben. Die äußerste Schleife iteriert durch jede Ebene, die mittlere Schleife durch jede Zeile in einer Ebene, und die innerste Schleife durch jede Spalte in einer Zeile.

Summe der Zeilen eines mehrdimensionalen Arrays

Nun probieren wir etwas Praktischeres aus. Wir berechnen die Summe jeder Zeile in einem 2D-Array:

#include <stdio.h>

int main() {
int grades[3][4] = {
{85, 92, 78, 88},
{91, 87, 93, 89},
{76, 82, 95, 90}
};

printf("Schüler  Mathematik  Naturwissenschaften  Englisch  Geschichte  Summe\n");
printf("--------------------------------------------------------------\n");

for(int i = 0; i < 3; i++) {
int sum = 0;
printf("%7d", i+1);
for(int j = 0; j < 4; j++) {
printf("%9d", grades[i][j]);
sum += grades[i][j];
}
printf("%9d\n", sum);
}

return 0;
}

In diesem Beispiel haben wir ein 2D-Array grades, das die Noten von 3 Schülern in 4 Fächern darstellt. Wir berechnen die Summe der Noten für jeden Schüler (Zeile) und geben sie zusammen mit den einzelnen Noten aus.

Matrizenmultiplikation

Für unseren finalen Akt führen wir eine Matrizenmultiplikation durch – eine häufige Operation in vielen wissenschaftlichen und ingenieurtechnischen Anwendungen:

#include <stdio.h>

int main() {
int matA[2][3] = {{1, 2, 3}, {4, 5, 6}};
int matB[3][2] = {{7, 8}, {9, 10}, {11, 12}};
int result[2][2] = {{0, 0}, {0, 0}};

// Matrizenmultiplikation durchführen
for(int i = 0; i < 2; i++) {
for(int j = 0; j < 2; j++) {
for(int k = 0; k < 3; k++) {
result[i][j] += matA[i][k] * matB[k][j];
}
}
}

// Das Ergebnis ausgeben
printf("Ergebnis der Matrizenmultiplikation:\n");
for(int i = 0; i < 2; i++) {
for(int j = 0; j < 2; j++) {
printf("%d ", result[i][j]);
}
printf("\n");
}

return 0;
}

Hier multiplizieren wir zwei Matrizen matA (2x3) und matB (3x2), um die result Matrix (2x2) zu erhalten. Die drei verschachtelten Schleifen führen die Multiplikation durch: Die äußeren zwei Schleifen iterieren durch jedes Element der Ergebnis-Matrix, während die innerste Schleife den Wert für dieses Element berechnet.

Und da haben wir es! Wir haben die Grundlagen der mehrdimensionalen Arrays in C, von 2D bis 3D, und haben sogar einige praktische Anwendungen behandelt. Erinnern Sie sich daran, dass Übung den Meister macht, also zögern Sie nicht, diese Konzepte selbst auszuprobieren. Viel Spaß beim Programmieren!

Credits: Image by storyset