1.8 KiB
1.8 KiB
IF.03.22 POSE - Procedural Programming
Aufgabe: Car - Abstract Data Type
Es soll ein abstrakter Datentyp Car implementiert werden, welcher einfache Grundfunktionalitäten eines Autos realisiert.
Beispiel
Die Codesequenz um ein Auto aus einem Autoabstellplatz zu bekommen und auf 100 km/h zu beschleunigen wäre folgendermaßen:
Car c = get_char(JEEP);
if (get_color(c) == BLACK) {
set_acceleration_rate(c, 3);
while (get_speed(c) < 100)
accelerate(c);
} else {
printf("I only drive black cars!")
}
Aufgabe
- Definieren Sie zwei enums
CarTypeundColor. - Machen Sie eine forward-Deklaration für den Car, damit die Prototypen im h-file vom Compiler akzeptiert werden.
- Erstellen Sie minimale Leerimplementierungen für alle erforderlichen Funktionen. Damit müsste das Gesamtprojekt bauen.
- Definieren Sie das struct aus der forward-Deklaration.
- Erstellen Sie lokale (nur im File car.cpp) Variablen für alle erforderlichen Autos.
- Erstellen Sie ein lokales Array
car_parkin welchem alle Autos abgespeichert werden können. - Schreiben Sie ein Programm in Datei
car_main_driver.c, dass alle Autos, welche incar.cppdefiniert sind, um die Wette fahren lässt.- Ausbaustufe 1: Holen Sie sich alle Autos aus
car.cppund geben Sie diese untereinander im Terminal aus.
Symbolisieren Sie die Autos durch deren Anfangsbuchstaben und eine laufende Nummer. - Ausbaustufe 2: Lassen Sie die Autos nun "fahren", indem Sie in jeder Runde die Beschleunigung zufällig für jedes Auto setzen und aufgrund der daraus resultierenden Geschwindigkeit das Auto entsprechend nach rechts setzen.
Das Rennen soll abgebrochen werden, sobald ein Auto das Ziel (den rechten Bildschirmrand) erreicht hat.
- Ausbaustufe 1: Holen Sie sich alle Autos aus
Achtung: Die Geschwindingkeit wird in km/h, die Beschleunigung in m/s angegeben!