FH Darmstadt 
FB Informatik 
Prof.Dr. H.P.Weber
Programmieren II 
Praktikum
4

Ziel: Sie sollen die Datenstruktur Baum in Form einer Template-Klasse anwenden können.

1    Wörterliste

Zu einer gegebenen, beliebigen Textdatei soll eine Liste der darin auftretenden Wörter erstellt werden. Alle Wörter werden dabei alphabetisch sortiert in eine zweite Textdatei ausgegeben. Jedes Wort soll nur einmal in der Liste wiedergegeben werden; zusätzlich soll angegeben werden, wie oft es in der Ursprungsdatei vorkommt. Die Einträge in der Ausgabedatei sollen formatiert sein (s. Beispiel). Auf der Konsole soll außerdem die Gesamtzahl der Wörter und die Anzahl der unterschiedlichen in der Eingabedatei auftretenden Wörter ausgegeben werden.
Ein Beispiel :
Eingabedatei: Ausgabedatei:
Zu einer gegebenen, beliebigen Textdatei soll eine Liste der darin auftretenden Wörter erstellt werden. Alle Wörter werden dabei alphabetisch sortiert in eine zweite Textdatei ausgegeben. Alle..........................1 Liste.........................1 Textdatei.....................2 Wörter........................2 Zu............................1 alphabetisch..................1 auftretenden..................1 ausgegeben....................1 beliebigen....................1 dabei.........................1 darin.........................1 der...........................1 eine..........................2 einer.........................1 erstellt......................1 gegebenen,....................1 in............................1 soll..........................1 sortiert......................1 werden........................1 werden........................1 zweite........................1

Technische Hinweise:


2    Verbesserte Wörterliste (fakultativ)

Verbessern Sie Ihr Programm aus Aufgabe 1, indem Sie echte Wörter erkennen (also Satzzeichen und Ziffern entfernen) und eine wirkliche lexikalische Sortierung vornehmen (also groß und klein geschriebene Wörter nicht separat sortieren sowie die Umlaute richtig einsortieren). Realisieren Sie zur Lösung dieser Aufgaben eine Klasse GermanWord, die es Ihnen erlaubt, die Template-Klassen aus Aufgabe 1 unverändert zu übernehmen, indem Sie im Anwendungsprogramm jetzt mit einem Tree<GermanWord> - Objekt arbeiten. Ihre GermanWord-Klasse sollte folgende Methoden enthalten:

  • Der Konstruktor übernimmt einen string und entfernt alle Satzzeichen und Ziffern, so dass nur noch echte Wörter übrig bleiben. Verwenden Sie hierzu Methoden der string-Klasse wie find_first_of und replace.
  • Die überladenen Operatoren operator< und operator> sorgen dafür, dass groß und klein geschriebene Wörter nicht wie bei der einfachen ASCII-Code-Sortierung separat sortiert werden und dass die Umlaute richtig einsortiert werden (also z.B. 'ä' unter 'a').
  • Eine Methode isEmpty sollte vorhanden sein, damit im Anwendungsprogramm nur nicht-leere GermanWord-Objekte (also keine, die nur einen leeren string enthalten) in den Tree eingefügt werden können.
  • Ein cast-Operator operator string  soll vorhanden sein, damit der Tree aus Aufgabe 1 unverändert übernommen werden kann (und GermanWord-Objekte wenn nötig implizit in strings gewandelt werden).