Aufgabe 9

Wir verwenden einen Vector of <wstring> programmieren Klassen und Unterklassen

Schreiben Sie ein C++ Programm, das aus einer utf8 Datei Wörter liest sie in einem Lexikon speichert: Wörter lexikon;
Das Lexikon soll wieder ausgegeben werden, die Anzahl der Wörter soll gezählt werden.

Dazu definieren Sie sich eine Klasse Wörter.
Die Idee ist, dass diese Klasse in einem wstring Vector alle Wörter speichert.

 

  1. Definieren Sie eine Klasse Wörter.
    Im ihrem private Bereich soll ein Vector definiert werden, der Wörter speichern kann.

    	public:
    	  bool is_element(wstring word);
    	  bool insert(wstring Wort);
    	  bool insert_keep_sorted(wstring Wort);
         int print_anzahl_wörter();
    	
    	private:
           void rm_punct(wstring word);
           vector <wstring> words;
           int number_of_words;
        	

  2. Die Klasse words definiert eine private Methode void rm_punct(wstring word) die alle Punktuationszeichen am Anfang und Ende des eingegebenen Strings word entfernt. (verwenden Sie Lösungen aus den letzten Aufgaben)
  3. Die Klasse words definiert eine public Methode bool is_element(wstring word), die testet, ob der eingebene wstring Wort schon in den Wörtern vorkommt. (verwenden Sie die STL-Routine find, entfernen Sie alle Punktuationszeichen am Anfang und Ende des eingegebenen Strings).
  4. Schreiben Sie eine public Methode bool insert(wstring Wort) die in zuerst alle Punktuationszeichen am Anfang und Ende des eingegebenen Wort entfernt (verwenden Sie die private Methode und dann im vector words speichert. Falls Wort nicht vorkommt, wird der Wert true zurückgeliefert, ansonsten false
  5. Schreiben Sie eine Methode void drucke() die alle Elemente des Vectors words ausdruckt.
  6. Schreiben Sie eine Methode print_anzahl_wörter() die ausgibt, wieviele Wörter im vector sind.
  7. Schreiben Sie eine Methode insert_keep_sorted(wstring Wort) die alle Punktuationszeichen am Anfang und Ende des eingegebenen wstrings entfernt und dann das Wort im vector words so speichert, dass die Wörter im vector words alphabetisch sortiert bleiben.
    (Hinweis: Sie können mit Indexzugriff [] oder mit Iteratoren durch den Vector laufen, professioneller sind Interatoren) z.B.
      Inhalt words:
           "der","sie","wenn"
      Eingabe: "doch"
        a) es wird die Einfügestelle 2 ermittelt. 
    	          (eventuell eigene private Methode int find_position(wstring Wort) )
    	b) alle Wörter hinter der Einfügestelle werden um eine Stelle nach hinten verschoben.
    	          (eventuell eigene private Methode void shift_right(Vect_Iterator Position) )
    	c) das Wort wird an der Einfügestelle 2 eingefügt.