5. Aufgabe:
In dieser Aufgabe sollen einige Operationen implementiert werden, die
den Umgang mit Zeitschriftenartikeln beschreiben. Dafür wird die
folgende Datenstruktur verwendet :
CONST StringLength = 30; TYPE string = ARRAY [0..StringLength] OF CHAR; Article = RECORD title : string; author : string; pages : CARDINAL; fontSize : CARDINAL; END; ArtPtr = POINTER TO Article;
Implementieren Sie die folgenden Prozeduren und Funktionsprozeduren.
Diese Funktionsprozedur legt eine neue Article-Struktur an, füllt die Felder entsprechend der übergebenen Parameter ein, und gibt den Zeiger auf die Struktur zurück.
Diese Prozedur löscht den Artikel auf den art zeigt, indem sie den nicht mehr benötigten Speicherplatz zurückgibt, und setzt danach art auf NIL.
Diese Funktionsprozedur liefert TRUE zurück, falls der Titel oder der Autorenname mit word übereinstimmt, andernfalls FALSE.
Diese Funktionsprozedur gibt die Zeit (in Minuten) zurück, die schätzungsweise gebraucht wird, um den Artikel art zu lesen. Diese berechnet sich wie folgt : pro Seite werden standardmässig 5 Minuten veranschlagt. Die sich daraus ergebende Gesamtdauer wird aber mit dem Fontgrössenfaktor 12/fontSize multipliziert, und auf die nächstgrösste ganze Zahl gerundet. Ausserdem soll der Ausnahmefall fontSize = 0 abgefangen werden; das Lesen beansprucht in diesem Fall keine Zeit.
Diese Prozedur liest eine Artikelbeschreibung von der Tastatur ein.
Diese Prozedur gibt eine Artikelbeschreibung (auf dem Bildschirm) aus.
6. Aufgabe:
Entwickeln Sie Prozeduren und Funktionsprozeduren, die es Ihnen erlauben,
Stapel von Artikeln (aus der Aufgabe 5) zu verwalten. Verwenden Sie dabei als Datenstruktur
eine linked list (siehe Skript) mit den
nachfolgenden Definitionen :
TYPE LINK = POINTER TO NODE; NODE = RECORD elem : ArtPtr; next : LINK; END; STACK = RECORD head : LINK; z : LINK; height : CARDINAL; END;Implementieren Sie die folgenden Prozeduren und Funktionsprozeduren. Passen Sie dazu die im Skript angegebene Beispiel-Implementierung an.
Diese Prozedur initialisiert den Stapel s.
Diese Funktionsprozedur gibt TRUE zurück, falls s leer ist, andernfalls FALSE.
Diese Prozedur legt den Artikel art zuoberst auf den Stapel s.
Diese Funktionsprozedur nimmt den obersten Artikel vom Stapel s, und gibt ihn zurück. Falls s leer ist, gibt sie NIL zurück.