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

Jetzt kombinieren wir alles: Arrays in Funktionen übergeben, Strings verarbeiten, Statistiken berechnen. Das ist echte Programmierung! 🎯

Arrays an Funktionen übergeben Suchen und Sortieren Strings verarbeiten Kombinierte Aufgaben Array of Strings

📨 Arrays an Funktionen übergeben

Arrays werden in C immer als Zeiger übergeben – das heißt, die Funktion arbeitet mit dem Original (kein Kopie)! Die Größe muss extra übergeben werden:

array_funktion.cC
#include <stdio.h>

float durchschnitt(int arr[], int n) {
    int sum = 0;
    for (int i = 0; i < n; i++) sum += arr[i];
    return (float)sum / n;
}

int maximum(int arr[], int n) {
    int m = arr[0];
    for (int i = 1; i < n; i++)
        if (arr[i] > m) m = arr[i];
    return m;
}

int main() {
    int n[] = {2, 1, 3, 1, 2, 4};
    printf("Ø: %.2f\n", durchschnitt(n, 6));  // 2.17
    printf("Max: %d\n", maximum(n, 6));       // 4
    return 0;
}

🔄 Bubble Sort – einfaches Sortieren

Bubble Sort vergleicht benachbarte Elemente und tauscht sie, bis alles sortiert ist:

bubble_sort.cC
void bubble_sort(int arr[], int n) {
    for (int i = 0; i < n-1; i++) {
        for (int j = 0; j < n-1-i; j++) {
            if (arr[j] > arr[j+1]) {
                int tmp = arr[j];      // Tausch
                arr[j]   = arr[j+1];
                arr[j+1] = tmp;
            }
        }
    }
}

📋 Array of Strings

string_array.cC
/* Array von 4 Strings, je max. 20 Zeichen */
char tage[4][20] = {"Montag", "Dienstag", "Mittwoch", "Donnerstag"};
for (int i = 0; i < 4; i++)
    printf("%s\n", tage[i]);

✏️ Übungen

Übung 1

Funktion schreiben

Schreibe eine Funktion minimum(int arr[], int n), die das kleinste Element eines Arrays zurückgibt:

int minimum(int arr[], int n) { int min = arr[0]; for (int i = 1; i < n; i++) { if (___________) min = arr[i]; } return min; }
Übung 2

Suche im Array

Schreibe eine Funktion suche(int arr[], int n, int wert), die den Index des gesuchten Werts zurückgibt (-1 wenn nicht gefunden):

int suche(int arr[], int n, int wert) { for (int i = 0; i < n; i++) { if (___________) return i; } return -1; }
Übung 3 – Kapitel-Abschlussprogramm

Noten-Verwaltung

Schreibe ein vollständiges Programm mit Funktionen für: Eingabe (5 Noten einlesen), Berechnung (Durchschnitt, Min, Max), Ausgabe (alle Werte anzeigen):

#include <stdio.h> #define N 5 void eingabe(int noten[], int n) { /* ... */ } float schnitt(int noten[], int n) { /* ... */ } int min_note(int noten[], int n) { /* ... */ } int max_note(int noten[], int n) { /* ... */ } void ausgabe(int noten[], int n, float avg, int mi, int ma) { /* ... */ } int main() { int noten[N]; eingabe(noten, N); float avg = schnitt(noten, N); int mi = min_note(noten, N); int ma = max_note(noten, N); ausgabe(noten, N, avg, mi, ma); return 0; }
Verwende für die Eingabe: scanf("%d", ¬en[i]) in einer for-Schleife!
Übung 4 – Bonus

Binäre Suche

Binäre Suche ist viel schneller als lineare Suche – aber nur in sortierten Arrays! Das Prinzip: Mitte prüfen, dann linke oder rechte Hälfte wählen. Implementiere die Funktion:

#include <stdio.h> int binaere_suche(int arr[], int n, int wert) { int links = 0, rechts = n - 1; while (links <= rechts) { int mitte = (links + rechts) / 2; if (arr[mitte] == wert) return mitte; /* gefunden! */ else if (arr[mitte] < wert) links = mitte + 1; /* rechte Haelfte */ else rechts = mitte - 1; /* linke Haelfte */ } return -1; /* nicht gefunden */ } int main() { int sortiert[] = {2, 5, 8, 12, 16, 23, 38, 42, 55, 72}; int n = 10; printf("Suche 23: Index %d\n", binaere_suche(sortiert, n, 23)); /* 5 */ printf("Suche 10: Index %d\n", binaere_suche(sortiert, n, 10)); /* -1 */ return 0; }
Lineare Suche braucht im schlimmsten Fall n Vergleiche. Binäre Suche braucht nur log2(n) – bei 1000 Elementen: 1000 vs. 10 Schritte!