Zeichenumkehrung
-
//Programm zur Zeichenumkehrung #include <iostream> #include <string> using namespace std; int main() { int i; int Zahl = 15; char Test[30]; cout << endl; cout << "Wie heissen sie?" << endl; for (i=0; i<30;) { cin.get(Test[i]); if (Test[i] == '\n') { i = 30; } i++; } for (i=29; i>=0; i--) { cout << Test[i]; } cout << endl; return 0; }
Mein Problem ist, dass bei der cout-Wiedergabe meine Eingabe zwar korrekt rückwärts wiedergegeben wird, aber falls der Array vom Nutzer nicht voll ausgenutzt wurde die unbeschriebenen Elemente vorne als seltsame Zeichen wiedergegeben werden.
Meine Idee zur Behebung ist:for (i=29; i>=0; i--) { if(Test[i] != /*"Auf was prüfen?"*/) { cout << Test[i]; } }
Leider weiß ich nicht auf was ich prüfen muss.
Könnt ihr mir helfen?
-
#include <iostream> #include <algorithm> #include <string> using namespace std; int main() { string name; cout << "Wie heiszen Sie? "; getline(cin, name); reverse(name.begin(), name.end()); cout << name; return 0; }
-
warum setzt du denn i auf 30, bei einem \n, lass das mal lieber
-
nman deine Lösung ist zwar nett aber die umgeht mein Problem
Ich wollt eigentlich wissen, ob es eine Möglichkeit gäbe, auf etwas zu prüfen, damit er erst schreibt, wenn tatsächlich etwas in den Arrays steht.@ kingruedi: ich könnt auch
break;
reinschreiben, Hauptsache die for-Schleife wird beendet.;)
-
du vertstehst wohl nicht ganz was ich meine
#include <iostream> using namespace std; int main() { size_t i=0; //du solltest hier lieber size_t anstelle von int nehmen char test[30]; cout << "\nWie heissen Sie? "; for(;i<30;++i) { cin.get(test[i]); if(test[i]=='\n') break; } while(i!=0) cout << test[--i]; cout << endl; }
-
Jetzt hab ichs kapiert
Danke