erklärung bitte (leicht!)



  • Nochmal zur Aufgabenstellung:

    #include <iostream>
    #include <string>
    #include <iterator>
    #include <algorithm>
    
    int main() 
    {
      std::string wort;
      cin >> wort;
      copy(wort.rbegin(), wort.rend(), ostream_iterator<char>(cout, ""));
    }
    

    Kürzere Vorschläge? :xmas1:

    Damit will ich allerdings nicht sagen, daß das die Lösung ist, die ein Anfänger da abliefern sollte. Das kann man später noch machen. Aber das Wort mit std::string einzulesen und die length-Methode zum Aufbau der Schleife benutzen ist imho schon sinnvoll.



  • Jester schrieb:

    Damit will ich allerdings nicht sagen, daß das die Lösung ist, die ein Anfänger da abliefern sollte.

    richtig, und sowas sollte auch nicht in 'nem anfängerbuch stehen. nur black boxes etc., das ist für anfänger total unverständlich.
    :xmas2:



  • Jester schrieb:

    Kürzere Vorschläge? :xmas1:

    #include <iostream>
    #include <string>
    
    int main(void)
    {
        std::string wort;
        std::cin >> wort;
        for(std::string::reverse_iterator it = wort.rbegin(); it != wort.rend(); ++it)
            std::cout << *it;
    }
    

    Eine Zeile kürzer :p :xmas2:

    Ich mag die for-Schleife für solche Dinge einfach viel lieber als die Sachen aus <algorithm> 😃

    EDIT: Wofür includest du eigentlich <iterator>??

    EDIT2: Habs gerade gesehen... für ostream_iterator<char>

    EDIT3 🕶 : Bei dir fehlen noch ein paar std::

    #include <iostream> 
    #include <string> 
    #include <iterator> 
    #include <algorithm> 
    
    int main() 
    { 
      std::string wort; 
      std::cin >> wort; 
      std::copy(wort.rbegin(), wort.rend(), std::ostream_iterator<char>(std::cout, "")); 
    }
    


  • @Phoemux: jo, okay. Aber die Implementierung ist nicht mehr so schön griffig. 🙂



  • .
    .
    .
    for(std::string::reverse_iterator it = wort.rbegin(); it != wort.rend(); ++it, std::cout << *it); 
    .
    .
    


  • Hallo

    egon2 schrieb:

    BorisDieKlinge schrieb:

    ich hab elementar angefangen .. char* etc. !!! erst später OO !!

    Man lernt heute das kleine Einmal-Eins nicht vorher - sondern beginnt gleich mit dem schriftlichen Rechnen! :xmas1:

    Auch in der Schule gibt es viele Beispiel für das Prinzip vom Allgemeinem zum Speziellen.

    chrische



  • BorisDieKlinge schrieb:

    naja wenn der Hase nicht mehr läuft, können sich anfänger nich dran tun um zu kapieren wieso er nicht mehr läuft...

    Würdest du, wenn der Hase nicht mehr läuft, die std::string Klasse deiner Standard-Lib umschreiben, oder wie ist das im Bezug auf std::string zu verstehen?

    egon2 schrieb:

    Man lernt heute das kleine Einmal-Eins nicht vorher - sondern beginnt gleich mit dem schriftlichen Rechnen!

    Was hat das mit dem Verhältnis einer äußeren Schnittstelle zu einer ausgetüftelten Implementierung zu tun? Verhält sich etwa schriftliches Rechnen zu Kopfrechnen wie eine Schnittstelle zu ihrer versteckten, professionellen Funktionalität?



  • Phoemuex schrieb:

    Ich mag die for-Schleife für solche Dinge einfach viel lieber als die Sachen aus <algorithm> 😃

    Siehe dazu auch Effective STL - Item 5

    Phoemuex schrieb:

    Eine Zeile kürzer :p :xmas2:

    Hier noch eine Zeile weniger, indem die for-Schleife diesmal benutzt wird, ohne der Funktionalität des Programms zu nützen 😉

    #include <iostream>
    #include <string>
    #include <algorithm>
    #include <iterator>
    
    int main()
    {
        for(std::string s; !s.length(); std::cin >> s, std::reverse_copy(s.begin(), s.end(), std::ostream_iterator<char>(std::cout, "")));
    }
    


  • Konstruktör schrieb:

    Siehe dazu auch Effective STL - Item 5

    Google schrieb:

    Prefer range member functions to their single-element counterparts.

    Gibts da auch ne Begründung zu? Ich habe das Buch selber nicht...

    :xmas2:



  • int main()
    {
    for(std::string s="balabal"; !s.length(); std::cin >> s, std::reverse_copy(s.begin(), s.end(), std::ostream_iterator<char>(std::cout, "")));
    }


Anmelden zum Antworten