Lab 01: Stack
Voraussetzungen
Nutzen Sie hierfür gcc.
Sie können gcc unter Linux und/oder macOS direkt verwenden. Unter Linux installieren Sie gcc über Ihren Paket-Manager, unter macOX über Homebrew.
Nutzen Sie Windows 10 können Sie entweder eine Linux in einer virtuellen Maschine (z.B. in VirtualBox) nutzen, oder direkt das Windows Subsystem for Linux (WSL 2.0) nutzen. Alternativ ist es möglich Windows Subsystem for Linux über den Windows App Store zu installieren.
In der Wahl der Linux Distribution sind sie frei, alle Beispiele in der Vorlesung werden jedoch unter Ubuntu (letzter stabiler Release) bewertet und eventuell vorgestellt.
Aufgabenstellung
Implementieren Sie einen Stack auf Basis folgender Header-Datei (
stack.h
):
Ihr Stack verfügt über eine maximale Größe von 100 Elementen.
Ihr Code sollte zu einem gewissen Maße robust sein, stellen Sie daher sicher dass folgende Bedingungen eingehalten werden:
a. Beim überschreiten der maximal zulässigen Anzahl von Einträgen durch den Aufruf von
push()
liefert Ihr Code folgende Fehlermeldung:ERROR: Size 100 of stack exceeded when adding value X
Wobei X der Wert der Variable ist, welcher versucht wurde auf den Stack zu legen.
b. Beim Versuch einen Wert mittels
pop()
vom Stack zu nehmen, ohne dass ein Wert auf dem Stack liegt erfolgt folgende Fehlermeldung:ERROR: Stack is empty, NULL return instead
In diesem Fall liefert die Funktion
pop()
keinen Integer-Wert, sonden den WertNULL
zurück.c. Beim Versuch einen Wert mittels
peek()
vom Stack zu lesen wenn der Stack keine Einträge enthält erfolgt folgender Hinweis:ERROR: Stack is empty, NULL return instead
In diesem Fall liefert die Funktion
peek()
keinen Integer-Wert, sondern den WertNULL
zurück.d. Alle drei Fehlermeldungen werden auf stderr ausgegeben.
Hinweis: Achten Sie darauf, dass bei der Ausgabe der Fehlermeldung diese immer mit einem Zeilenumbruch (\n) endet.
Hinweis: Ihre Datei(en) dürfen keine
main()
-Methode enthalten. Sollten Sie dennoch einemain()
-Methode erstellen wollen, tun Sie dies bitte nur in einer Datei main.c
Abgabe
Die Bewertung Ihrer Abgabe findet automatisch statt. Stellen Sie hierzu folgende Punkte sicher:
Ihre Lösung befindet sich im Ordner aufgabe1.
Ihre Implementierung befindet sich in einer Datei mit dem Namen stack.c.
Sie nutzen eine Header-Datei in der der obige Header hinterlegt ist.
Zur Abgabe erhalten Sie einen Zugang zum hochschulinternen GitLab.
Ihre Lösung checken Sie in Ihrem Repository ein.
Bewertung
Die Bewertung Ihrer Aufgabe findet anhand einer Reihe von automatisierten Tests statt.
Hierzu ist es erforderlich, dass die obigen Schritte exakt eingehalten werden.
Ihr Implementierung wird einer Reihe von automatisierten Tests unterzogen, die Ihre Implementierung auf Korrektheit überprüfen.
Abgaben, die nicht vollständig sind oder die Abgabekriterien nicht erfüllen werden nicht bewertet.
Abgaben, die nicht fristgerecht eingereicht werden, werden nicht bewertet.
Nutzen Sie zur Abgabe ausschließlich das beschriebene Verfahren. Abgaben, die per E-Mail oder anderen Wegen eingereicht werden, werden nicht bewertet.
Abgaben, die aufgrund eines Fehlers nicht durch die Tests laufen, werden entsprechend mit weniger Punkten bewertet.
Hinweise
In der Aufgabestellung wird die Rückgabe des Wertes Null
gefordert. gcc sollte beim Kompilieren eine Warnung der Form
liefern. Starten Sie gcc mit der Option -Wno-int-conversion
um diese Warnung zu deaktivieren. Weitere Informationen zu den gcc Warnungen erhalten Sie auf den GCC Seiten unter Options to Request or Suppress Warnings.
Last updated