Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<string>
- using namespace std;
- void wortspiegel(string &text, int pos)
- {
- int pos_anf = pos;
- int pos_end = pos; //Beide Variablen beginnen beim Positionswert
- while (pos_anf >= 0 && text.at(pos_anf) != ' ' && text.at(pos_anf) != '.') // Solange Pos >= 0 && diese Stelle im String != Leerzeichen/Punkt...
- {
- 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 )
- }
- 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...
- {
- 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 )
- }
- for (int i = pos_anf + 1, j = pos_end - 1; i < j; i++, j--)
- {
- char tmp = text.at(i); // Zwischenspeichern der einzelnen Zeichen
- text.at(i) = text.at(j); // Wort wird von außen nach innen umgekehrt zB aus "Baum" wird "mauB" und letztlich "muaB"
- text.at(j) = tmp;
- }
- }
- int main()
- {
- int aktuelle_position = 0;
- char lrsq;
- string text;
- cout << "Bitte geben Sie den Text ein: ";
- getline(cin, text);
- cout << endl;
- while (true) {
- cout << text << endl;
- for (int i = 0; i < aktuelle_position; i++) // Schleife die Leerzeichen ausgibt
- { // solange bis i<aktuelle_position ist...
- cout << " ";
- }
- cout << "*" << endl; //... danach erst der Stern '*'
- do {
- cout << "Befehl (l: links, r: rechts, s: spiegeln, q: Ende) ?- ";
- cin >> lrsq;
- } while (lrsq != 'l' && lrsq != 'r' && lrsq != 's' && lrsq != 'q'); // Eingabeaufforderung wird wdh bei falscher Eingabe
- cout << endl;
- switch (lrsq) { //switch-case für die 4 Optionen l-r-s-q
- case 'l':
- if (aktuelle_position > 0) // Nur falls die aktuelle_position groesser 0 ist...
- aktuelle_position--; // ...wird der Wert dekrementiert
- break;
- case 'r':
- if (aktuelle_position < text.length() - 1) // Nur falls die aktuelle_position groesser 0 ist...
- aktuelle_position++; // ...wird der Wert inkrementiert
- break;
- case 's':
- wortspiegel(text, aktuelle_position); // ruft Wortspiegel Funktion auf
- break;
- case 'q':
- return 0; //Beendet das Programm
- break;
- }
- }
- system("PAUSE");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement