SHARE
TWEET

Untitled

a guest Nov 20th, 2019 101 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include<iostream>
  2. #include<string>
  3. using namespace std;
  4.  
  5. void wortspiegel(string &text, int pos)
  6. {
  7.     int pos_anf = pos;
  8.     int pos_end = pos; //Beide Variablen beginnen beim Positionswert
  9.     while (pos_anf >= 0 && text.at(pos_anf) != ' ' && text.at(pos_anf) != '.') // Solange Pos >= 0 && diese Stelle im String != Leerzeichen/Punkt...
  10.     {
  11.         pos_anf--; //...wird der Anfangspositions-Wert dekrementiert bis entweder a) text.at(X) ein Sonderzeichen ist oder b) der Anfang vom String erreicht ist ( -1 = Maximum )
  12.     }
  13.     while (pos_end < text.length() && text.at(pos_end) != '.' && text.at(pos_end) != ' ') // Solange Pos < String-Text Länge && diese Stelle im String != Leerzeichen/Punkt...
  14.     {
  15.         pos_end++; //...wird der Endpositions-Wert dekrementiert bis entweder a) text.at(X) ein Sonderzeichen ist oder b) das Ende vom String erreicht ist( .size() = Maximum )
  16.     }
  17.     for (int i = pos_anf + 1, j = pos_end - 1; i < j; i++, j--)
  18.     {
  19.         char tmp = text.at(i); // Zwischenspeichern der einzelnen Zeichen
  20.         text.at(i) = text.at(j); // Wort wird von außen nach innen umgekehrt zB aus "Baum" wird "mauB" und letztlich "muaB"
  21.         text.at(j) = tmp;
  22.     }
  23. }
  24.  
  25. int main()
  26. {
  27.     int aktuelle_position = 0;
  28.     char lrsq;
  29.     string text;
  30.  
  31.     cout << "Bitte geben Sie den Text ein: ";
  32.     getline(cin, text);
  33.     cout << endl;
  34.  
  35.     while (true) {
  36.         cout << text << endl;
  37.         for (int i = 0; i < aktuelle_position; i++) // Schleife die Leerzeichen ausgibt
  38.         { // solange bis i<aktuelle_position ist...
  39.             cout << " ";
  40.         }
  41.         cout << "*" << endl; //... danach erst der Stern '*'
  42.  
  43.         do {
  44.             cout << "Befehl (l: links, r: rechts, s: spiegeln, q: Ende) ?- ";
  45.             cin >> lrsq;
  46.         } while (lrsq != 'l' && lrsq != 'r' && lrsq != 's' && lrsq != 'q'); // Eingabeaufforderung wird wdh bei falscher Eingabe
  47.  
  48.         cout << endl;
  49.  
  50.         switch (lrsq) { //switch-case für die 4 Optionen l-r-s-q
  51.         case 'l':
  52.             if (aktuelle_position > 0) // Nur falls die aktuelle_position groesser 0 ist...
  53.                 aktuelle_position--; // ...wird der Wert dekrementiert
  54.             break;
  55.         case 'r':
  56.             if (aktuelle_position < text.length() - 1) // Nur falls die aktuelle_position groesser 0 ist...
  57.                 aktuelle_position++; // ...wird der Wert inkrementiert
  58.             break;
  59.         case 's':
  60.             wortspiegel(text, aktuelle_position); // ruft Wortspiegel Funktion auf
  61.             break;
  62.         case 'q':
  63.             return 0; //Beendet das Programm
  64.             break;
  65.         }
  66.     }
  67.     system("PAUSE");
  68.     return 0;
  69. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top