String umkehren ?



  • #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


Anmelden zum Antworten