Aufgabe 1: erste Struktur

Definiere eine Struktur Punkt mit zwei float-Feldern für x- und y-Koordinate.
Lege eine Variable vom Typ struct Punkt an, weise ihr Werte zu und gib sie mit printf() aus.

Musterlösung: erste Struktur
#include <stdio.h>

struct Punkt {
    float x;
    float y;
};

int main(void) {
    struct Punkt p1;

    p1.x = 3.5;
    p1.y = 7.2;

    printf("Punkt: (%.2f, %.2f)\n", p1.x, p1.y);
    return 0;
}

Aufgabe 2: zwei Personen

Definiere eine Struktur Person mit char name[20] und int alter.
Lege zwei Variablen an und gib sie aus.

Musterlösung: zwei Personen
#include <stdio.h>

struct Person {
    char name[20];
    int alter;
};

int main(void) {
    struct Person p1 = {"Anna", 25};
    struct Person p2 = {"Ben", 30};

    printf("%s ist %d Jahre alt.\n", p1.name, p1.alter);
    printf("%s ist %d Jahre alt.\n", p2.name, p2.alter);

    return 0;
}

Aufgabe 3: Struktur in einer Funktion

Definiere eine Struktur Rechteck mit float breite und float hoehe.
Schreibe eine Funktion float flaeche(struct Rechteck r).

Musterlösung: Struktur in einer Funktion
#include <stdio.h>

struct Rechteck {
    float breite;
    float hoehe;
};

float flaeche(struct Rechteck r) {
    return r.breite * r.hoehe;
}

int main(void) {
    struct Rechteck r1 = {5.0, 3.0};
    printf("Flaeche: %.2f\n", flaeche(r1));
    return 0;
}

Aufgabe 4: Array von Strukturen

Erstelle ein Array von 3 Student-Strukturen und gib sie aus.

Musterlösung: Array von Strukturen
#include <stdio.h>

struct Student {
    char name[20];
    float note;
};

int main(void) {
    struct Student s[3] = {
        {"Max", 1.7},
        {"Lena", 2.3},
        {"Tim", 1.0}
    };

    for (int i = 0; i < 3; i++) {
        printf("%s hat Note %.1f\n", s[i].name, s[i].note);
    }

    return 0;
}

Aufgabe 5: Vereinfachung mit typedef

Schreibe Aufgabe 1 neu, aber mit typedef. Berechne die Distanz zweier Punkte.

Musterlösung: Vereinfachung mit typedef
#include <stdio.h>
#include <math.h>

typedef struct {
    float x;
    float y;
} Punkt;

int main(void) {
    Punkt a = {1.0, 2.0};
    Punkt b = {4.0, 6.0};

    float distanz = sqrt((b.x - a.x)*(b.x - a.x) + (b.y - a.y)*(b.y - a.y));
    printf("Distanz: %.2f\n", distanz);

    return 0;
}

Aufgabe 6: Struktur mit Funktion und Rückgabe

In einem Programm soll mit Zeiten gearbeitet werden. Erstelle dafür eine geeignete Struktur, welche die Minuten und Stunden einer Uhrzeit erfassen hilft. Erstelle dann zusätzlich eine Funktion, mit der Uhrzeiten addiert werden können. Teste diese Funktion durch Aufrufe in einer main-Funktion.

Musterlösung: Struktur mit Funktion und Rückgabe
#include <stdio.h>

typedef struct {
    int stunde;
    int minute;
} Uhrzeit;

Uhrzeit addiere(Uhrzeit a, Uhrzeit b) {
    Uhrzeit sum;
    sum.stunde = a.stunde + b.stunde;
    sum.minute = a.minute + b.minute;

    if (sum.minute >= 60) {
        sum.stunde++;
        sum.minute -= 60;
    }

    return sum;
}

int main(void) {
    Uhrzeit u1 = {1, 45};
    Uhrzeit u2 = {2, 30};

    Uhrzeit erg = addiere(u1, u2);
    printf("Gesamtzeit: %d:%02d\n", erg.stunde, erg.minute);

    return 0;
}

Aufgabe 7: Temperaturmessungen

Verwende eine Struktur mit Temperaturwert und Einheit.
Berechne Durchschnitt und Maximum.

Musterlösung: Temperaturmessungen
#include <stdio.h>

typedef struct {
    float wert;
    char einheit[5];
} Temperatur;

int main(void) {
    Temperatur woche[7] = {
        {20.5, "C"}, {21.0, "C"}, {19.8, "C"},
        {22.1, "C"}, {23.3, "C"}, {21.9, "C"}, {20.0, "C"}
    };

    float summe = 0.0;
    float max = woche[0].wert;

    for (int i = 0; i < 7; i++) {
        summe += woche[i].wert;
        if (woche[i].wert > max)
            max = woche[i].wert;
    }

    printf("Durchschnitt: %.2f\n", summe / 7);
    printf("Maximum: %.2f\n", max);

    return 0;
}

Aufgabe 8: typedef für ein Auto

Erstelle eine Struktur Auto und eine Ausgabefunktion.

Musterlösung: typedef für ein Auto
#include <stdio.h>

typedef struct {
    char modell[20];
    int baujahr;
    float preis;
} Auto;

void auto_ausgeben(Auto a) {
    printf("Modell: %s\nBaujahr: %d\nPreis: %.2f EUR\n",
           a.modell, a.baujahr, a.preis);
}

int main(void) {
    Auto a = {"Golf", 2018, 15499.90};
    auto_ausgeben(a);

    return 0;
}

Aufgabe 9: Bücher suchen

Erstelle eine Struktur für Bücher, in der der Buchtitel, der Autor und die Anzahl der Seiten erfasst werden kann. Suche in einem Array von Büchern nach Titeln, die mit einem bestimmten Wort beginnen. Erstelle dazu eine Funktion suchen(), die diese Suche implementiert.

Musterlösung: Bücher suchen
#include <stdio.h>
#include <string.h>

typedef struct {
    char titel[50];
    char autor[50];
    int seiten;
} Buch;

void suchen(Buch b[], int n, const char *wort) {
    for (int i = 0; i < n; i++) {
        if (strncmp(b[i].titel, wort, strlen(wort)) == 0)
            printf("Gefunden: %s (%s)\n", b[i].titel, b[i].autor);
    }
}

int main(void) {
    Buch bib[5] = {
        {"Apfelbaum", "A. Autor", 200},
        {"Apokalypse", "B. Autor", 300},
        {"Banane", "C. Autor", 150},
        {"Apfelkuchen", "D. Autor", 220},
        {"Zitrone", "E. Autor", 180}
    };

    suchen(bib, 5, "Ap");

    return 0;
}

Aufgabe 10: Komplexe Zahlen

Erstelle eine Struktur für komplexe Zahlen. Implementiere dann eine Funktion zur Addition von komplexen Zahlen. Die Funktion soll das Ergebnis zurückgeben mittels return. Implementieren in der main-Funktion einige Aufrufe der Funktion zur Addition, um die Funktionsweise nachzuweisen.

Musterlösung: Komplexe Zahlen
#include <stdio.h>

typedef struct {
    float real;
    float imag;
} Komplex;

Komplex add(Komplex a, Komplex b) {
    Komplex r;
    r.real = a.real + b.real;
    r.imag = a.imag + b.imag;
    return r;
}

Komplex mul(Komplex a, Komplex b) {
    Komplex r;
    r.real = a.real*b.real - a.imag*b.imag;
    r.imag = a.real*b.imag + a.imag*b.real;
    return r;
}

void print(Komplex k) {
    printf("%.2f + %.2fi\n", k.real, k.imag);
}

int main(void) {
    Komplex a = {2.0, 3.0};
    Komplex b = {1.0, -4.0};

    Komplex sum = add(a, b);
    Komplex prod = mul(a, b);

    printf("Summe: ");
    print(sum);

    printf("Produkt: ");
    print(prod);

    return 0;
}

Nach oben scrollen