String umkehren ?
-
Servs zusammen,
versuche eine kleine Aufgabe zu lösen und komme irgendwie nicht weiter
Ich versuche die Eingabe rückwärts wieder auszugeben, hab hier durchs Forum gestöbert und auch einige Lösungen gefunden, doch diese waren nicht das was ich gesucht hatteAufgabe ist folgende:
Schreiben Sie eine Funktion void str_reverse(string& str), die die Reihenfolge der Zeilen im String str umkehrt!Die Aufageb hab ich mit dem reverse Algo gelöst, das war nicht das Problem - ich würd die Aufgabe auch gern durch eine Schleife lösen. Doch irgendwie will das Ganze nicht so wie ich mir das vorstelle.
#include<string> #include<iostream> #include<algorithm> using namespace std; void str_umkehr(string& s) { cout << "Schreiben Sie einen Satz: "; getline(cin, s); reverse(s.begin(), s.end()); cout << "\nIhre Eingabe rueckwaerst lautet: " << s << endl; } void str_reverse(string& str) { cout << "Schreiben Sie einen Satz: "; getline(cin, str); int i = str.length(); int n = 0; string temp_str; temp_str.length(); for(i; i>=0; i--) { temp_str[i] = str[n]; n++; } cout << "\nIhre Eingabe rueckwaerts lautet: " << temp_str << endl; } int main() { // string s; // str_umkehr(s); string str; str_reverse(str); return 0; }
Kann ich die Länge des strings str dem string temp_str zuweisen ? Weil so wie ich es oben hab, geht es nicht - bekomme beim Ausführen eine Fehlermeldung, das die Anweisung nicht auf dem Speicher durchgeführt werden kann.
Evt. kann mir einer von euch helfen - für eure Geduld und Hilfe bin ich wie immer sehr dankbarXecutor
-
1. Ein String endet mit /0, das ist ein Terminierungszeichen, wenn das als erstes kommt (und das muss es, denn es ist immer das Letzte Zeichen, eben das Terminierungszeichen).
2.Wie wärs so:
void str_reverse() { cout << "Jib wat ein:" << endl; string eing; cin >> eing; int n = (strlen(eing.c_str()) - 1); for (int i=0; i < (strlen(eing.c_str())); i++) { cout << eing.c_str()[n]; n--; } cout << endl; }
-
temp_str.resize(str.length());
-
Glamdrink schrieb:
int n = (strlen(eing.c_str()) - 1);
Autsch. Sowas tut doch weh.
-
#include<string> #include<iostream> using namespace std; // String umkehren string str_reverse(const string & str) { // temp-String erzeugen string temp; // originalen String von hinten nach vorne durchlaufen // und in temp speichern for (int i=str.length()-1; i>=0; i--) { temp +=str[i]; } // umgekehrten String zurückgeben return temp; } int main() { // String erzeugen string str; // eine Zeile auslesen cout << "Schreiben Sie einen Satz: "<<endl; getline(cin, str); // umkehren lassen string reverse = str_reverse(str); // rückwärts ausgeben cout<<"von hinten: "<<endl; cout<<reverse<<endl; return 0; }
-
Schreiben Sie eine Funktion void str_reverse(string& str), die die Reihenfolge der Zeilen im String str umkehrt!
void str_reverse(string& str) { int slength = str.length()-1; for(int i=0; slength/2>=i; ++i) { char temp = str[i]; str[i] = str[slength-i]; str[slength-i] = temp; } }
Ich sehe in der Aufgabenstellung nichts von ausgeben, hier die variante die tatsächlich den String umkehrt.
Gruß Mirauder Mo
-
Hallo,
war spricht eigentlich hier gegen:
... string reverse(str.rbegin(), str.rend()); ...
-
Ihr seid sehr fleißig
Erstmal danke euch allen für die Beispiele und Shade dir für den Hinweise, werd ich mir merken
Das Einzige was bei mir funktioniert, ist das von Glamdrink *g*@CarstenJ,
deine Lösung hab ich hier schon im Forum gefunden, nur leider will die bei mir nicht funktionieren. Ich krieg jedesmal beim Compilieren eine Fehlermeldung angezeigt - weiss jetzt leider nicht mehr welche genau das war.Xecutor
-
CarstenJ schrieb:
war spricht eigentlich hier gegen:
... string reverse(str.rbegin(), str.rend()); ...
Die Aufgabenstellung?
-
Hallo,
wieso das? Was widerspricht denn dabei der Aufgabenstellung?
-
da steht "Schreiben Sie eine Funktion".
-
Wie die Funktion das bewerkstelligen soll, steht doch da nicht. Wieso kann ich nicht schreiben:
void str_reverse(string& str) { string reverse(str.rbegin(), str.rend()); str = reverse; }
-
CarstenJ schrieb:
wieso das? Was widerspricht denn dabei der Aufgabenstellung?
Die Aufageb hab ich mit dem reverse Algo gelöst, das war nicht das Problem - ich würd die Aufgabe auch gern durch eine Schleife lösen.
-
Ok ok..hast gewonnen. :p