Aufgabe 9

Erweitern Sie die Klasse cis_wstring der letzten Aufgabe, verwenden Sie allerdings zum Speichern der Buchstaben nicht ein array of w_chars sondern den Container der STL <vector>. Nutzen Sie so gut es geht STL-Funktionen.

 

class cis_wstring {
public:
	int get_anzahl()  ... liefert die Anzahl der Buchstaben der cis_string Daten
   // 
   //  ....
   //
private:
	vector <wchar_t> data ... alle Buchstaben der cis_string Daten
	int anzahl        ...  Anzahl der Buchstaben in data
}
  1. str++ Konvertiert die Buchstaben eines cis_wstring String in Großbuchstaben

  2. --str Konvertiert die Buchstaben eines String in Kleinbuchstaben

  3. Schreiben Sie eine eigene Vergleichsfunktion str1 < str2 , die beim alphabetischen Vergleich der beiden cis_wstring str1 und str2
    str1 < str2 true liefert, falls str1 alphabetisch kleiner als str2 ist. Ihr Stringvergleich soll eventuelle Groß- und Kleinbuchstaben nicht unterscheiden.
  4. void translate() ... alle Großbuchstaben in Kleinbuchstaben und umgekehrt konvertieren und ausgeben (Verwenden Sie Libraryfunktionen).
  5. void reverse() ... dreht die Reihenfolge der Buchstaben im internen Buchstaben Array um.
  6. bool is_palinrom() ... testet, ob cis_wstring ein Palindrom ist. (Groß und Kleinbuchstaben sollen nicht unterschieden werden)

Nun soll folgende main() Funktion möglich sein:

int main()
{
// Setzen des locale auf utf-8  (Verwenden Sie locale und global ect...)
...

wstring eingabe;
wstring ausgabe;
cis_wstring text;


wcout << "Bitte geben sie einen String ein :";
wcin >> eingabe;
text.set_cis_string_data(eingabe);   // eingabe in den cis_wstring text eintragen
wcout << "Die Anzahl der Buchstaben ist : "<< text.get_anzahl_chars() << endl;

// test ob der erste Buchstabe groß ist:
if (text.first_is_upper())
	{
	wcout << "Der erste Buchstabe des Strings ist ein großer Buchstabe" << endl;

// Konvertieren auf Groß/Kleinschreibung:
text.translate();
wcout << "TRANSLATE: cis_string ist : "<< text << endl;


// Konvertieren auf upper:
text++;
wcout << "TOUPPER: cis_string ist : "<< text << endl;

// Konvertieren auf lower:
--text;
wcout << "TRANSLATE: cis_string ist : "<< text << endl;


// is palindrom:
if (text.is_palindrom()) {
wcout << "Ich bin ein Palindrom "<< text << endl;

// bitte umdrehen
text.reverse();
ausgabe = text.get_cis_string_data();  
wcout << L"Umgedreht:  " << ausgabe << endl;


wcout << "Ich bin ein Palindrom "<< text << endl;


}

freiwillige: Zusatzaufgabe: Internes Sortieren nach DIN 5007-1

Eine DIN Verordnung schreibt eine alphabetische Sortierung für die Umlaute 'äüö' vor. (Siehe DIN 5007-1 für Lexikas (Din Norm 5007-1)
Versuchen Sie diese Sortierung bei der ihrer Vergleichsfunktion einzubauen.