Drucken Eingabe-string die Wörter in umgekehrter Reihenfolge
Mit if
und while
/do
- while
mein job drucken folgende Benutzer Eingänge (string-Wert) in umgekehrter Reihenfolge.
Beispiel:
input-string-Wert : "sind Sie Amerikaner"
Ausgabe in umgekehrter Reihenfolge : "Amerikaner sind Sie"
Gibt es eine Möglichkeit, dies zu tun?
Habe ich versucht
string a;
cout << "enter a string: ";
getline(cin, a);
a = string ( a.rbegin(), a.rend() );
cout << a << endl;
return 0;
...aber dies würde die Umkehrung der Reihenfolge der Wörter und Rechtschreibung während Rechtschreibung ist nicht das, was ich bin going.
Ich sollte auch hinzufügen, die in if
und while
Aussagen, haben aber keine Ahnung wie.
- Natürlich es ist.
- string a; cout << "geben Sie einen string ein: "; getline(cin, a); a = string ( a.rbegin(), ein.rend() ); cout << a << endl; return 0; dies kehrt sich die GANZE Sache.. die Reihenfolge und die Schreibweise, aber ich will nicht mit der Rechtschreibung. ich donot wissen, wie ich hinzufügen, die in if und while statements..
- Es würde helfen, wenn du deinen post versucht, code in der Frage selbst? Es ist ein klassisches problem, Sie haben versucht, die Suche nach es ebenso?
- Fügen Sie, dass Ihre post statt der Kommentare die für eine bessere Formatierung.
- Rückwärts die ganze Reihe, wie du tust, dann drehen Sie jedes Wort. Es wäre extrem einfach und effizient, wenn Sie benutzt eine Klasse wie llvm::StringRef.
- ich habe, aber ich bin nicht so erfahren in der Programmierung. und ja, ich habe versucht, auf der Suche 🙁
- Oft liegt der Schlüssel zur Lösung dieser Probleme ist die Beschreibung des Algorithmus in Worten, ohne zu denken in C++ (oder anderen Programmiersprachen). Wenn du beschreiben kannst, um einen älteren verwandten, wie dies mit einem Stift und Papier, Umwandlung dieser Beschreibung zu Ihrer Programmiersprache der Wahl ist viel einfacher.
- Sie könnten die Spaltung der string in einen vector, dann Durchlaufen Sie den Vektor vom Ende zum Anfang.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Algorithmus ist:
string
? Auch dies ist nicht mit while/do-while-Schleifen als die Frage Staaten.a
mit dem Wert (eine Kopie) und die Rückgabe einerstring
(ein anderes Exemplar).Hier ist eine C-basierte Ansatz, kompilieren mit einem C++ - compiler verwendet den stack zu minimieren, Erstellung von
char *
strings. Mit wenig Arbeit, diese können angepasst werden, um die Verwendung von C++ - Klassen, sowie als trivial Austausch der verschiedenenfor
Schleifen mit einemdo-while
oderwhile
block.Kompilieren mit einem C++ - compiler, und verwenden Sie dann:
Diesem Beispiel entpackt die Eingabe-string ein Wort in einer Zeit,
und erstellt einen Ausgabe-string, durch die Verkettung erfolgt in umgekehrter Reihenfolge.
`
`
Diese genau verwendet man jedem
if
undwhile
.Könnten Sie versuchen, diese Lösung immer eine
vector
vonstring
's mit der '' (Leerzeichen) Zeichen als Trennzeichen.Der nächste Schritt wäre zum Durchlaufen dieser Vektor rückwärts zu generieren, die den umgekehrten string.
Hier ist, was es Aussehen könnte (
split
ist die string-splitting-Funktion aus diesem Beitrag):Edit 2: Wenn Sie nicht wie
vector
s aus welchem Grund auch immer, können Sie arrays verwenden (beachten Sie, dass die Zeiger können als arrays). Dieses Beispiel weist eine Feste Größe-array auf dem heap, möchten Sie vielleicht, dies zu ändern, um zu sagen, das doppelte, wenn das aktuelle word-Betrag erreicht hat, einen bestimmten Wert.Lösung mit einem
array
statt einervector
:Bearbeiten: Hinzugefügt beinhaltet
main
Funktionwhile
loop-formatDiesen code hier verwendet, string-Bibliotheken zur Erkennung der Leerzeichen in der input-stream-und umzuschreiben, die Ausgabe Satz entsprechend
Des Algorithmus ist
1. Holen Sie sich die input-stream mit getline-Funktion aufnehmen und auf die spacecs. Initialisieren Sie pos1 auf null.
2. Suchen Sie nach dem ersten Leerzeichen in der input-stream
3. Wenn kein Platz gefunden wird, wird der input-stream ist die Ausgabe
4. Sonst, erhalten die position des ersten Leerzeichen nach pos1, d.h. pos2.
5. Speichern Sie den sub-string zwischen pos1 und pos2 an den Anfang der Ausgabe Satz; newSentence.
6. Pos1 ist jetzt mit dem ersten char nach der leere.
7. Wiederholen Sie die 4, 5 und 6, bis keine Leerzeichen Links.
8. Fügen Sie den letzten Teil-string am Anfang der newSentence. –