Hilfe die sechste :-)



  • SideWinder schrieb:

    Helium schrieb:

    Gesucht ist die Summe der Zahlen 1 bis 100.

    5050. das weiß man auswendig.

    Tut man das? Ich weiß es nicht. Aber moment ... 100*101/2 = 5050, ja stimmt.

    Deine Formel ist falsch, der liebe Euler hat uns beigebracht das 1+100=101 -> 101*50=5050 ist 😉

    Was steht denn bei mir? n*(n+1)/2. Ob du nun erst 100 * 101 rechnest und dann durch zwei teilst, oder erst die 100 durch zwei teilst und dann mit 101 multiplizierst ist scheißegal.



  • Visual Newbie schrieb:

    Gesucht ist die Summe der Zahlen 1 bis 100.

    die 5050 kann man auch so ausgeben:

    int summe=0;
    for(int i=1;i<=100;++i)
       summe+=zahl;
    cout<<summe<<'\n';
    


  • oder, wenn du deinen Lehrer verblüffen willst:

    #include <iostream>
    using namespace std;
    
    template<int n>
    int summeVon1Bis(){return n + summeVon1Bis<n-1>();}
    
    template<>
    int summeVon1Bis<1>(){return 1;}
    
    int main()
    {
        cout << summeVon1Bis<100>() << endl;
        cin.get();
    }
    


  • schorsch code schrieb:

    oder, wenn du deinen Lehrer verblüffen willst:

    #include <iostream>
    using namespace std;
    
    template<int n>
    int summeVon1Bis(){return n + summeVon1Bis<n-1>();}
    
    template<>
    int summeVon1Bis<1>(){return 1;}
    
    int main()
    {
        cout << summeVon1Bis<100>() << endl;
        cin.get();
    }
    

    da bürdest du dem optimierer aber einiges auf.
    sollte man sich nicht lieber auf die sichere seite stellen mit

    template<>
    struct SummeVon1Bis<n>{
       static int const value=SummeVon1Bis<n-1>::value+n;
    };
    

    ?


  • Mod

    wenn wir schon bei WTFs sind, darf eine version mit standard algorithmen nicht fehlen:

    #include <algorithm>
    #include <iterator>
    #include <iostream>
    struct Niterator
    {
        typedef bidirectional_iterator_tag iterator_category;
        typedef int value_type;
        typedef int& reference;
        Niterator(int n=0):n(n) {}
        int& operator*() { return n; }
        const int& operator*() { return n; }
        Niterator& operator++() { ++n; return *this; }
        Niterator operator++() { Niterator x(n); ++*this; return x; }
        Niterator& operator--() { --n; return *this; }
        Niterator operator--() { Niterator x(n); --*this; return x; }
        int n;
    };
    bool operator==(const Niterator& lhs, const Niterator& rhs) { return lhs.n==rhs.n;}
    bool operator!=(const Niterator& lhs, const Niterator& rhs) { return !(lhs==rhs);}
    int main()
    {
        std::cout << std::accumulate(Niterator(1),Niterator(100),0);
    }
    


  • Sicher das es ein WTF ist? Für mich ist es Abstraktion.



  • Probiert ihr die Programme auch, bevor ihr die reinstellt? Das funktioniert gar nich... oder womit programmiert ihr? Ich hab Visual 6.0

    Und das erste Programm gibt gar nix aus...???!!!



  • kommt irgendwie dem längsten hallo world nah..

    he, newbie, soviel hilfe, und du willst wirklich rein garnix selber denken?



  • Visual Newbie schrieb:

    Und das erste Programm gibt gar nix aus...???!!!

    wenn du damit mein

    int summe=0; 
    for(int i=1;i<=100;++i) 
       summe+=zahl; 
    cout<<summe<<'\n';
    

    meinst, dann stimmt das wohl. das war nur sozusagen der kern. die sachen, die man immer macht, also main() und using namespace und include mußte nur drumherumschreiben.



  • Eigentlich eine Frechheit, dass du dir sowas dem guten Newbie gegenüber erlaubst, am Ende muss der noch mitdenken.



  • Insolence schrieb:

    Eigentlich eine Frechheit, dass du dir sowas dem guten Newbie gegenüber erlaubst, am Ende muss der noch mitdenken.

    wie ich eben erfahren habe, ist er http://www.c-plusplus.net/forum/profile-var-mode-is-viewprofile-and-u-is-18316.html Azubi SE

    als solcher muß er, ähm, deutlich besser am ball bleiben, als wie als schüler.


Anmelden zum Antworten