Advertisement
Guest User

Untitled

a guest
Nov 20th, 2019
210
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.37 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement