Zurück zur Startseite

Labor 5

Akkumulieren, Suchen & Sortieren
Grundlagen der Programmierung in C - HTW Berlin - WiSe 2025/26
Dauer: ca. 180 Minuten · das abschließende Labor

Lernziele

In diesem Labor üben Sie die Algorithmen aus Vorlesung 10 & 11:

Wichtige Konzepte zur Erinnerung

Teil 1: Akkumulieren (VL 10) — ca. 80 Min

1 Summe eines Arrays

Aufgabenstellung

Berechnen Sie die Summe aller Werte in einem Array und geben Sie sie aus.

Anforderungen

Beispielausgabe

Summe: 26
Musterlösung Falsches Passwort!
#include <stdio.h>

int main() {
    int zahlen[6] = {3, 7, 2, 8, 5, 1};
    int summe = 0;            // Startwert

    for (int i = 0; i < 6; i++) {
        summe += zahlen[i];      // aufaddieren
    }

    printf("Summe: %d\n", summe);
    return 0;
}

2 Notendurchschnitt berechnen

Aufgabenstellung

Berechnen Sie den Durchschnitt von 5 Noten — mit zwei Nachkommastellen.

Anforderungen

Beispielausgabe

Durchschnitt: 2.40
Musterlösung Falsches Passwort!
#include <stdio.h>

int main() {
    int noten[5] = {2, 1, 3, 2, 4};
    int summe = 0;

    for (int i = 0; i < 5; i++) {
        summe += noten[i];
    }

    double schnitt = (double)summe / 5;   // cast für Nachkommastellen
    printf("Durchschnitt: %.2f\n", schnitt);
    return 0;
}

3 Zählen mit Bedingung

Aufgabenstellung

Zählen Sie, wie viele Noten besser als 3 sind (also kleiner als 3).

Anforderungen

Beispielausgabe

Noten besser als 3: 4
Musterlösung Falsches Passwort!
#include <stdio.h>

int main() {
    int noten[8] = {3, 2, 4, 2, 1, 5, 2, 3};
    int anzahl = 0;

    for (int i = 0; i < 8; i++) {
        if (noten[i] < 3) {
            anzahl++;
        }
    }

    printf("Noten besser als 3: %d\n", anzahl);
    return 0;
}

4 Produkt berechnen

Aufgabenstellung

Berechnen Sie das Produkt aller Array-Werte. Achtung: Der Startwert ist hier nicht 0!

Anforderungen

Beispielausgabe

Produkt: 120
Musterlösung Falsches Passwort!
#include <stdio.h>

int main() {
    int zahlen[5] = {1, 2, 3, 4, 5};
    int produkt = 1;           // Startwert 1, nicht 0!

    for (int i = 0; i < 5; i++) {
        produkt *= zahlen[i];
    }

    printf("Produkt: %d\n", produkt);
    return 0;
}

Teil 2: Suchen & Sortieren (VL 11) — ca. 100 Min

5 Lineare Suche — Position finden

Aufgabenstellung

Suchen Sie einen Wert im Array und geben Sie seine Position aus. Wird er nicht gefunden, soll das gemeldet werden.

Anforderungen

Beispielausgabe

16 gefunden an Position 3
Musterlösung Falsches Passwort!
#include <stdio.h>

int main() {
    int zahlen[6] = {4, 8, 15, 16, 23, 42};
    int gesucht = 16;
    int position = -1;          // -1 = nicht gefunden

    for (int i = 0; i < 6; i++) {
        if (zahlen[i] == gesucht) {
            position = i;
            break;            // gefunden -> aufhören
        }
    }

    if (position != -1)
        printf("%d gefunden an Position %d\n", gesucht, position);
    else
        printf("%d nicht gefunden\n", gesucht);
    return 0;
}

6 Alle Vorkommen zählen

Aufgabenstellung

Zählen Sie, wie oft ein Wert im Array vorkommt — diesmal ohne break, weil wir alle Treffer wollen.

Anforderungen

Beispielausgabe

3 kommt 4 mal vor
Musterlösung Falsches Passwort!
#include <stdio.h>

int main() {
    int zahlen[9] = {3, 7, 3, 1, 3, 9, 3, 2, 5};
    int gesucht = 3;
    int anzahl = 0;

    for (int i = 0; i < 9; i++) {
        if (zahlen[i] == gesucht) {
            anzahl++;            // KEIN break -> weiter zählen
        }
    }

    printf("%d kommt %d mal vor\n", gesucht, anzahl);
    return 0;
}

7 Bubble Sort (aufsteigend)

Aufgabenstellung

Sortieren Sie ein Array mit Bubble Sort aufsteigend und geben Sie es danach aus.

Anforderungen

Beispielausgabe

Sortiert: 1 3 4 5 8
Musterlösung Falsches Passwort!
#include <stdio.h>

int main() {
    int zahlen[5] = {5, 3, 8, 1, 4};
    int n = 5, temp;

    for (int i = 0; i < n - 1; i++) {
        for (int j = 0; j < n - 1 - i; j++) {
            if (zahlen[j] > zahlen[j + 1]) {
                temp = zahlen[j];                 // Swap
                zahlen[j] = zahlen[j + 1];
                zahlen[j + 1] = temp;
            }
        }
    }

    printf("Sortiert: ");
    for (int i = 0; i < n; i++) printf("%d ", zahlen[i]);
    printf("\n");
    return 0;
}

8 Absteigend sortieren

Aufgabenstellung

Nehmen Sie Ihren Bubble Sort aus Aufgabe 7 und sortieren Sie absteigend (größte Zahl zuerst). Tipp: nur ein Zeichen ändern!

Anforderungen

Beispielausgabe

Absteigend: 8 5 4 3 1
Musterlösung Falsches Passwort!
#include <stdio.h>

int main() {
    int zahlen[5] = {5, 3, 8, 1, 4};
    int n = 5, temp;

    for (int i = 0; i < n - 1; i++) {
        for (int j = 0; j < n - 1 - i; j++) {
            if (zahlen[j] < zahlen[j + 1]) {   // nur < statt >
                temp = zahlen[j];
                zahlen[j] = zahlen[j + 1];
                zahlen[j + 1] = temp;
            }
        }
    }

    printf("Absteigend: ");
    for (int i = 0; i < n; i++) printf("%d ", zahlen[i]);
    printf("\n");
    return 0;
}

9 Alles kombinieren (Abschluss)

Aufgabenstellung

Die Königsaufgabe: Sortieren Sie ein Array aufsteigend und geben Sie dann Minimum, Maximum und Durchschnitt aus. Nach dem Sortieren stehen Min und Max ganz am Rand!

Anforderungen

Beispielausgabe

Min: 2, Max: 9 Durchschnitt: 5.00
Musterlösung Falsches Passwort!
#include <stdio.h>

int main() {
    int zahlen[6] = {7, 2, 9, 4, 5, 3};
    int n = 6, summe = 0, temp;

    /* 1. Bubble Sort (aufsteigend) */
    for (int i = 0; i < n - 1; i++)
        for (int j = 0; j < n - 1 - i; j++)
            if (zahlen[j] > zahlen[j + 1]) {
                temp = zahlen[j];
                zahlen[j] = zahlen[j + 1];
                zahlen[j + 1] = temp;
            }

    /* 2. Summe für den Durchschnitt */
    for (int i = 0; i < n; i++) summe += zahlen[i];

    /* 3. Min = erstes, Max = letztes Element */
    printf("Min: %d, Max: %d\n", zahlen[0], zahlen[n - 1]);
    printf("Durchschnitt: %.2f\n", (double)summe / n);
    return 0;
}

Geschafft! 🎉

Damit beherrscht ihr die Algorithmen-Bausteine aus VL 9–11: Akkumulieren (Summe, Durchschnitt, Zählen, Produkt), Suchen (Position, alle Vorkommen) und Sortieren (Bubble Sort auf-/absteigend). Genau diese Muster braucht ihr in der Klausur.

🔑 Passwörter für die Musterlösungen

Die Passwörter stehen unten — frei zugänglich. Bitte fair spielen: erst selbst probieren, dann mit der Musterlösung vergleichen. Eine Lösung, die ihr nur abgeschrieben habt, hilft euch in der Klausur nicht.

AufgabeThemaPasswort
Aufgabe 1Summe eines Arrayssum101
Aufgabe 2Notendurchschnittavg202
Aufgabe 3Zählen mit Bedingungcnt303
Aufgabe 4Produkt berechnenprod404
Aufgabe 5Lineare Suche (Position)pos505
Aufgabe 6Alle Vorkommen zählenvor606
Aufgabe 7Bubble Sort (aufsteigend)sort707
Aufgabe 8Absteigend sortierendesc808
Aufgabe 9Alles kombinierenkomb909
Zurück zur Startseite