Aufgabe 11: die Letzte Aufgabe: unsere Königsaufgabe !!!

Verwenden Sie Lösungen aus alten Hausaufgaben.... (recherchieren Sie in den hervorragenden Musterlösungen und verwenden Sie dazu Reguläre Ausdrücke

Schreiben Sie ein C++ Programm, das eine txt-Datei (utf-8 Kodiert) öffnet und über einen Filestream alle Wörter einliest

  1. Öffnen Sie eine UTF-8 Datei zum Lesen
  2. Lesen Sie die Datei wortweise ein und geben Sie mit Hilfe von regulären Ausdrücken alle Wörter aus, die maximal 4 Buchstaben haben.
  3. Geben Sie alle Wörter der Datei aus, denen Sie allerdings die Punktuationszeichen am Anfang und am Ende des Worts mit regulären Ausdrücken entfernt haben.
  4. verwenden Sie die Lösungen aus 2. und 3.:

  5. Sie lesen wieder aus der UTF-8 Datei, aber diesmal lesen Sie zeilenweise mit getline und splitten die Zeile nach Wörtern mit Hilfe der split-Methode von Boost.
  6. Entfernen Sie die Punktuationszeichen der einzelnen Wörter mit regulären Ausdrücken und dann fügen sie die Wörter mit weniger als 4 Buchstaben (auch wieder mit Hilfe von boost) in eine unordered map ein, die die Frequenz der Wörter zählen soll.
  7. Überführen Sie die unordered map in eine nach Häufigkeit sortierte Frequenliste und speichern Sie das Ergebnis in der Datei freq_list.txt


    Nun wissen Sie, dass der Container freq_list zwar die Häufigkeit zählt, aber nicht numerisch aufsteigend sortiert ist. Dies können Sie mit einem Container mulitmap lösen. Der Trick eine unordered_map zu sortierten besteht darin alle Elemente mit Ihrer Häufigkeit in einen Container multimap zu übertragen.
    Folgendermaßen können Sie vorgehen:

  8. Übertragen sie alle Elemente der unordered_map <wstring> freq_list zusammen mit Ihrer Häufigkeit in eine multimap<int,wstring>
    Beachten Sie, dass der Key der multimap nun die Häufigkeiten sind.. Da eine multimap immer nach dem Key geordnet ist, müssen Sie sie nur der Reihe nach ausgeben und schon haben Sie eine sortierte Frequenzliste. (siehe Script)

  9. Geben Sie von der die sortierten Wortliste die 5 häufigsten aus!
  10. Probieren Sie das Gleiche mit dem Container ordered_map <wstring> freq_list und stoppen Sie die Zeit des Programms wie in Aufgabe 11.
    (Hinweis: Es gibt auch eine eigene STL Library für C++ std::chrono::time_point), die das Stoppen der Zeit in C++ ermöglicht, siehe: http://en.cppreference.com/w/cpp/chrono