Kapitel 5 Unit 1 von 5 Theorie + Übungen Dauer: ~45 Min.
Ömer
Ömer sagt:

Bisher haben wir immer nur eine Zahl gespeichert. Was aber wenn du 100 Noten speichern willst? Mit einem Array speicherst du viele Werte unter einem Namen – und erreichst jeden mit seinem Index! 📊

Array deklarieren Array initialisieren Index-Zugriff [i] Arrays mit for-Schleifen Grenzen nicht überschreiten

📦 Was ist ein Array?

Ein Array ist eine Folge von Elementen gleichen Typs im Speicher. Jedes Element hat einen Index, der bei 0 beginnt:

int noten[5] – 5 Elemente, Index 0 bis 4
Index 0
Index 1
Index 2
Index 3
Index 4
1
3
2
1
4
noten[0]=1    noten[2]=2    noten[4]=4    (letztes: noten[Größe-1])

📝 Deklaration und Initialisierung

array_basics.cC
/* Deklaration – Größe muss eine Konstante sein */
int noten[5];                          // 5 int-Werte, uninitialisiert

/* Deklaration + Initialisierung */
int noten[5] = {1, 3, 2, 1, 4};      // alle 5 Werte
float preise[3] = {9.99f, 14.5f, 3.0f}; // float-Array
int nullen[10] = {0};                   // alles auf 0 setzen

/* Größe aus Initialisierung ableiten */
int werte[] = {10, 20, 30};            // Größe 3 automatisch

🔍 Zugriff mit Index

array_zugriff.cC
#include <stdio.h>
int main() {
    int noten[5] = {1, 3, 2, 1, 4};

    /* Einzelzugriff */
    printf("Erste Note: %d\n", noten[0]);   // 1
    printf("Letzte Note: %d\n", noten[4]);  // 4

    /* Alle Elemente mit for-Schleife */
    for (int i = 0; i < 5; i++) {
        printf("noten[%d] = %d\n", i, noten[i]);
    }
    return 0;
}
▶ Ausgabe
Erste Note: 1
Letzte Note: 4
noten[0] = 1
noten[1] = 3
noten[2] = 2
noten[3] = 1
noten[4] = 4

⚠️ Array-Grenzen nicht überschreiten!

Ein Array int a[5] hat gültige Indizes 0 bis 4. Der Zugriff auf a[5] oder a[-1] ist undefiniertes Verhalten – das Programm kann abstürzen oder falsche Ergebnisse liefern. C prüft keine Grenzen!

💻 Praxisbeispiel: Notendurchschnitt

durchschnitt.cC
#include <stdio.h>
int main() {
    int   noten[6] = {2, 1, 3, 1, 2, 4};
    int   summe  = 0;
    float schnitt;

    for (int i = 0; i < 6; i++)
        summe += noten[i];

    schnitt = (float)summe / 6;
    printf("Durchschnitt: %.2f\n", schnitt);
    return 0;
}
▶ Ausgabe
Durchschnitt: 2.17

✏️ Übungen

Übung 1

Indizes bestimmen

Gegeben: int zahlen[6] = {10, 25, 3, 17, 8, 42};

  1. zahlen[0] = _______
  2. zahlen[3] = _______
  3. zahlen[5] = _______ (letztes Element)
  4. Index von Wert 3 = _______
  5. zahlen[6] = _______ (was passiert?)
Übung 2

Minimum finden

Schreibe ein Programm, das in einem Array mit 8 Temperaturwerten den kleinsten Wert findet:

#include <stdio.h> int main() { float temp[8] = {18.5f, 22.0f, 15.3f, 19.7f, 11.2f, 24.1f, 16.8f, 20.0f}; float min = temp[0]; for (int i = 1; i < 8; i++) { if (___________) { min = temp[i]; } } printf("Minimum: %.1f°C\n", min); return 0; }
Übung 3 – Programm

Array vom Benutzer befüllen

Schreibe ein Programm, das 5 ganzzahlige Noten vom Benutzer einliest, alle ausgibt und den Durchschnitt berechnet:

#include <stdio.h> int main() { int noten[5]; /* Eingabe */ for (int i = 0; i < 5; i++) { printf("Note %d: ", i+1); scanf("%d", ¬en[i]); } /* Ausgabe und Summe */ return 0; }
Für scanf mit Array-Elementen: scanf("%d", ¬en[i]); – das & ist wie bei normalen Variablen!
Übung 4 – Bonus

Bubble Sort – Array sortieren

Bubble Sort vergleicht immer zwei benachbarte Elemente und tauscht sie, wenn sie in der falschen Reihenfolge sind. Nach jedem Durchlauf "blubbert" das größte Element ans Ende. Implementiere den Algorithmus:

#include <stdio.h> void drucke_array(int arr[], int n) { for (int i = 0; i < n; i++) printf("%d ", arr[i]); printf("\n"); } int main() { int zahlen[] = {64, 25, 12, 22, 11}; int n = 5; printf("Vor dem Sortieren: "); drucke_array(zahlen, n); /* Bubble Sort */ for (int i = 0; i < n - 1; i++) { for (int j = 0; j < n - 1 - i; j++) { if (zahlen[j] > zahlen[j + 1]) { int temp = zahlen[j]; zahlen[j] = zahlen[j + 1]; zahlen[j + 1]= temp; } } } printf("Nach dem Sortieren: "); drucke_array(zahlen, n); return 0; }
Der innere Durchlauf wird jedes Mal um 1 kürzer (n-1-i), weil das größte Element bereits am richtigen Platz ist.