Kapitel 5 Unit 2 von 5 Theorie + Übungen Dauer: ~45 Min.
Ömer
Ö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  4
  5  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}};

  1. t[0][0] = _______
  2. t[1][2] = _______
  3. t[0][2] = _______
  4. 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!