Aufgabe 7: Internationalisierung

Verwenden Sie einen utf-8 Text, wstrings und Internationalsierung
Schreiben Sie ein C++ Programm, das eine Datei öffnet und Wörter aus dieser Datei liest.

  1. Öffnen Sie die Datei
  2. setzten Sie das richtige Encoding
  3. lesen Sie die Datei zeilenweise und extrahieren sie der Reihe nach jedes Wort, das Sie mit Hilfe einer Funktionen testen:
    Die Funktion palindrom selbst, sollte eine Funktion reverse(wstring &word) verwenden, die Sie selbst programmieren sollen und die Buchstabenfolge eines Wortes umdreht.
      in etwa: 
      bool palindrom(wstring word) {
      
      	wstring r_word=word;
    	reverse(r_word);
    	if (r_word==word) return true;
    	
    	}
      
      void revese(wstring &word); 
  4. Schreiben Sie eine Funktion
    bool splice(wstring w1,wstring w2,wstring &erg) die true zurückliefert, wenn das Wort w2 in Wort w1 vorkommt und im Wort erg die Buchstaben des Wortes speichert, die nicht in Wort w1 vorkommen.
    z.B. (bestehen,eh,XXX) => XXX=besten
  5. Schreiben Sie eine Funktion, das eine Zeile von wstrings die einzelnen Wörter zerlegt und in einem Array of wstings speichert. Der Rückgabewert der Funktion ist die Anzahl der gespeichertern Wörter. Wie lautet deer Kopf der Funktion?
    int split( ....ARRAY wstrings liste..,.. wstings line   ...... ); 
  6. Zusatzaufgabe (jetzt zeigen Sie, was Sie können!):

  7. Schreiben Sie eine Funktion first, die als Argumente ein Array of wstrings bekommt, die Anzahl der Wörter im Array und im dritten Argument das erste Wort des Arrays of wstrings liefert. Falls das eingebene Array leer war, wird als RETURN Wert false zurückgeliefert, ansonsten true. Wie müssen die Parameter der Funktion definiert werden?
    bool first( ....ARRAY Wörter..,..anzahl_wörter...,.. erstes_wort .. ); 
  8. Schreiben Sie eine Funktion last, die aus einem Array of wstrings das erste Wort entfernt.
    Wenn das Array, mit dem die Funktion aufgerufen wird leer ist, dann soll der RETURN Wert false zurückgeliefert werden, ansonsten soll true zurückgeliefert werden.
    Im Parameter anzahl_der_wörter ist gespeichert, wieviele Elemente im Array sind. Zur Entfernung des letzten Elements des Arrays reicht es, in das letzte Element einen String mit einem Space zu schreiben und die Anzahl der Wörter um eins zu vermindern.
    bool last( wstring wörter[],int &anzahl_der_wörter) 
    
  9. Schreiben Sie eine rekursive Funktion
    bool member(wstring w,ARRAY wstring w_arr)
    die true zurückliefert, wenn das Wort w in der Liste von Wörtern w_arr vorkommt.
    Verwenden Sie dazu die Funktionen first und last der letzen beiden Aufgaben.
    Tipp:
    Die Lösung geht rekursiv vor, indem jeweils das vorderste Element der Liste mit dem gesuchten Term verglichen 
    wird.
    Abbruchbedingung:  
     Das vorderste Element ist mit dem gesuchten Term unifizierbar.
    Rekursiver Fall:
     Suche im Rest der Liste (d.h. ohne das vorderste Element) weiter.
    member(dackel, [spitz, mops, dackel, terrier])
    member(dackel, [mops, dackel, terrier])
    member(dackel, [dackel, terrier])
    
    (siehe hier: Rekursive Suche mit Listen (Prolog) )