
Ömer sagt:
Was wenn du eine Tabelle speichern willst – Zeilen und Spalten? Mehrdimensionale Arrays! Ein 2D-Array ist wie ein Koordinatensystem: matrix[zeile][spalte]. Denk an Spreadsheets oder Pixel-Bilder! 🗂️
2D-Array deklarieren
Zeile und Spalte adressieren
Verschachtelte for-Schleifen
Initialisierung von 2D-Arrays
Typische Anwendungen
🗂️ Zweidimensionale Arrays
Ein 2D-Array hat zwei Indizes: [Zeile][Spalte]. Stelle es dir wie eine Tabelle vor:
int matrix[3][4] – 3 Zeilen, 4 Spalten
[0]
[1]
[2]
[3]
[0]
1
2
3
4
[1]
5
6
7
8
[2]
9
10
11
12
matrix[0][0]=1 matrix[1][2]=7 matrix[2][3]=12
matrix.cC
#include <stdio.h> int main() { int m[3][4] = { {1, 2, 3, 4}, // Zeile 0 {5, 6, 7, 8}, // Zeile 1 {9, 10, 11, 12} // Zeile 2 }; /* Gesamte Tabelle ausgeben */ for (int z = 0; z < 3; z++) { for (int s = 0; s < 4; s++) { printf("%4d", m[z][s]); } printf("\n"); } return 0; }
▶ Ausgabe
1 2 3 45 6 7 8
9 10 11 12
💻 Praxisbeispiel: Stundenplan
stundenplan.cC
/* Noten: 3 Schüler, 4 Fächer */ int noten[3][4] = { {1, 2, 3, 1}, // Schüler 0 {2, 2, 1, 3}, // Schüler 1 {3, 4, 2, 2} // Schüler 2 }; /* Durchschnitt für jeden Schüler berechnen */ for (int s = 0; s < 3; s++) { int sum = 0; for (int f = 0; f < 4; f++) sum += noten[s][f]; printf("Schüler %d: %.2f\n", s, (float)sum/4); }
✏️ Übungen
Übung 1
Zugriff bestimmen
Gegeben: int t[2][3] = {{10,20,30},{40,50,60}};
t[0][0]= _______t[1][2]= _______t[0][2]= _______- Wie viele Elemente hat t insgesamt? _______
Übung 2 – Programm
Summe aller Elemente
Schreibe ein Programm, das alle Elemente einer 3×3-Matrix addiert und die Gesamtsumme ausgibt:
#include <stdio.h>
int main() {
int m[3][3] = {{1,2,3},{4,5,6},{7,8,9}};
int summe = 0;
/* verschachtelte for-Schleifen */
printf("Summe: %d\n", summe);
return 0;
}
Erwartetes Ergebnis: 1+2+...+9 = 45
Übung 3 – Programm
Multiplikationstabelle als 2D-Array
Befülle eine 5×5-Matrix mit dem Einmaleins (m[i][j] = (i+1) * (j+1)) und gib sie formatiert aus:
#include <stdio.h>
int main() {
int m[5][5];
/* Matrix befüllen */
for (int i = 0; i < 5; i++)
for (int j = 0; j < 5; j++)
m[i][j] = ________________;
/* Matrix ausgeben */
return 0;
}
Übung 4 – Bonus
Matrix transponieren
Beim Transponieren wird eine Matrix "gekippt": Zeilen werden zu Spalten. Aus einer 3×4-Matrix wird eine 4×3-Matrix. Schreibe das Programm und beobachte das Muster:
#include <stdio.h>
int main() {
int original[3][4] = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
};
int transponiert[4][3];
/* Transponieren: transponiert[j][i] = original[i][j] */
for (int i = 0; i < 3; i++)
for (int j = 0; j < 4; j++)
transponiert[j][i] = original[i][j];
printf("Original (3x4):\n");
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) printf("%3d", original[i][j]);
printf("\n");
}
printf("Transponiert (4x3):\n");
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 3; j++) printf("%3d", transponiert[i][j]);
printf("\n");
}
return 0;
}
Das Geheimnis: Zeile i, Spalte j im Original wird zu Zeile j, Spalte i im Transponierten. Einfach die Indizes tauschen!