String umgekehrt ausgeben (fehler)
-
Hallö, hier hab ich ein Problem und zwar will die Funktion nicht funktionieren.
Hier erstmal der code:void strUmkehren(string &s) { string umdrehen; int text_laenge = s.length(); for(int i = text_laenge; i>=0; i--) { umdrehen += s[i]; } s = umdrehen; }Was das Programm eigentlich tun sollte, ist nicht schwer zu verstehen, also es liest ein string und es soll dann den string umgekehrt ausgeben.
Vielleicht könnt ihr den Fehler ausfindig machen denn ich selber kann ich ihn nicht finden ..
Bitte keine "fertige Funktionen" posten, like reverse(), iteratoren usw.
Sollte eigentlich nicht schwer sein, und ist wahrscheinlich ein Logisches ProblemDanke schon mal

-
Beim ersten Schleifendurchlauf wird auf ein Zeichen an der Stelle
text_laengezugegriffen, welche nicht existiert.
-
Zenter schrieb:
Hallö, hier hab ich ein Problem und zwar will die Funktion nicht funktionieren.
Hier erstmal der code:void strUmkehren(string &s) { string umdrehen; int text_laenge = s.length(); for(int i = text_laenge; i>=0; i--) { umdrehen += s[i]; } s = umdrehen; }Was das Programm eigentlich tun sollte, ist nicht schwer zu verstehen, also es liest ein string und es soll dann den string umgekehrt ausgeben.
Vielleicht könnt ihr den Fehler ausfindig machen denn ich selber kann ich ihn nicht finden ..
Bitte keine "fertige Funktionen" posten, like reverse(), iteratoren usw.
Sollte eigentlich nicht schwer sein, und ist wahrscheinlich ein Logisches ProblemDanke schon mal

Es wird von 0 bis wohin bei den Indexen gezählt?
Edit: Zu langsam.
-
Also der Gedanke ist dass in der schleife
int i = text_laenge;so lang sein soll wie der eingegebene string, zb. 8, und da 8 groeßer ist als 0 soll die schleife vom ende des string bis anfangs die einzelne werte entnehmen zb. s[8], s[7] usw.. und in einem neuen string speichern.
-
TyRoXx schrieb:
Beim ersten Schleifendurchlauf wird auf ein Zeichen an der Stelle
text_laengezugegriffen, welche nicht existiert.thanks

lösung :
int i = text_laenge -1;
-
s.reverse();