1.
Definieren Sie in text_queues.h und text_queues.cpp
die aus der Vorlesung bekannte Warteschlange auf der Basis eines
Arrays. Elemente der Warteschlange sollen Wörter (Zeichenketten) sein,
die von der Konsole gelesen werden.Dimensionieren Sie das Array der Warteschlange mit einer als Konstante max_ queue_size vereinbarten Länge.Der Datentyp, der die ganze Warteschlange bezeichnet, soll word_queue heißen.Überlegen
Sie sich den genauen Datentyp der Elemente in der Warteschlange und,
wie der Speicherplatz für die jeweiligen Zeichenketten (in Hinblick auf
das Anfügen und Entnehmen) verwaltet werden muss. Führen Sie für den
Elementtyp den (evtl. synonymen) Typnamen text_word ein.
2.
Implementieren Sie die Anfügefunktion mit folgender Signatur:bool append(word_queue*, text_word)Das Resultat der Funktion soll true sein, falls die Operation ausgeführt werden konnte, false anderenfalls.Für
die Funktion extract(), die die Operationen get und drop kombinieren
soll, stehen folgende zwei alternative Signaturen zur Auswahl:bool extract(word_queue*, text_word*)text_word extract(word_queue*)Begründen Sie, welche davon bei Ihrer Implementation des Typs text_word adäquat oder zumindest günstiger ist, und implementieren Sie die Funktion mit dieser Signatur.
3.
Schreiben Sie in der Routine main
eine Schleife, die in jedem Durchlauf zunächst vom Benutzer eine
Entscheidung verlangt, ob er eine Wortfolge eingeben, eine bestimmte
Anzahl von gespeicherten Wörtern wieder auslesen oder das Programm
verlassen möchte.
Im
ersteren Falle soll das Programm eine Zeile mit beliebigen Wörtern von
der Konsole lesen und diese in Wörter zerlegen, wobei als Wort einfach
eine nicht durch Leerzeichen, Tabulatoren o. Ä. unterbrochene Folge
darstellbarer Zeichen verstanden werden soll.(Hinweis:
Dafür könnte der automatische Wortzerlegungsmechanismus der Eingabe von
char-Arrays über std::cin oder die Funktion scanf_s("%s", …) benutzt
werden.)Die
aus der Zerlegung der Eingabe gebildeten Wörter sollen der Reihe nach
in die Warteschlange geschrieben werden. Über nicht mehr in die
Warteschlange hineinpassende Wörter soll der Benutzer an der Konsole
informiert werden (mit Angabe der betreffenden Wörter).
Im
zweiten Fall soll eine positive ganze Zahl abgefordert werden. So viele
Wörter, wie die Zahl angibt, sollen nun aus der Warteschlange entnommen
und (durch Leerzeichen separiert) an der Konsole wieder ausgegeben
werden. Wenn weniger Wörter in der Warteschlange waren, als die Zahl
angibt, soll anschließend die Restanzahl der nicht mehr ausgebbaren
Wörter gemeldet (ausgegeben) werden.
Hinweis:
Um nach der Auswahleingabe eventuell im Eingabestrom verbliebene
Zeichen (gedrückte Tasten), die die nachfolgende Texteingabe stören
könnten, zu neutralisieren, kann z. B. der Befehl std::cin.clear()
verwendet werden.