Hilfe bei einer Addition



  • Moin,

    Vervollständigen Sie das folgende Programmgerüst so, dass das C++ Programm die Summe der Zahlen im Intervall [a, b] berechnet und ausgibt.

    Zur Berechnung der Summe verwenden Sie eine Schleife!

    include <iostream>

    int main(int argc, char* argv[])
    {
    const int a=17;
    const int b=52;

    int summe=0;

    soweit bin ich gekommen aber nun weiß ich nicht mehr weiter.
    Jetzt kommt ja die Schleife. Ich weiß aber nicht welche Schleife?
    Ich würde eig die for-schleife nehmen, da ich es bei einigen ähnlichen Aufgaben gesehen habe? Und wie könnte diese Schleife denn aussehen?

    LG

    capri03



  • Das sieht doch schon gut aus.
    welche Schleife ist eigentlich egal: while.../do...while/for...

    Da das Wetter eh Mist ist: schreib doch drei Versionen - und schau Dir an, wie sich die Schleifen ähneln, bzw. wie sich unterscheiden (Und das Du alles mit allen machen kannst).



  • Dann probier es mit einer for-Schleife aus. Wie würdest du es machen, wenn du mit einem Taschenrechner die Summe aufaddieren müsstest?



  • Hallo, danke erstmal für eure Antworten.

    for(i=1; i<=100; i++)
    summe=summe+i;

    das ist jetzt ne forschleife, die die ersten 100 zahlen addiert.

    nun hab ich das Problem, dass ich ja keine Zahlenreihe habe sondern nur zwei Zahlen habe. Das verwirrt mich jetzt ein bisschen.

    ich würde bei mir mit for(i=a; anfangen aber denke glaube ich dass es schon falsch wäre.

    LG



  • capri03 schrieb:

    ich würde bei mir mit for(i=a; anfangen aber denke glaube ich dass es schon falsch wäre.

    Moment: Du hast doch einen Compiler und alles, um das auszuprobieren, oder?

    Und dass i ein int ist, schreibst Du auch in die for-Schleife und nicht davor:

    for(int i=a;...)
    


  • Heißt Dein Lehrer Büttner?

    Dann antworte wie Gauß:

    unsigned long klGauss( unsigned long n )
    {
        return (n*n+n)/2;
    }
    
    unsigned long summe( unsigned long a, unsigned long b )
    {
        return klGauss( b ) - klGauss( a );
    }
    

    😃

    mfg Martin



  • Nee mein Lehrer heißt nicht büttner ^^

    PS ich habe vergessen noch zu schreiben, dass am ende,

    das stehen soll:

    std::cout << "Summe: " << summe;
    return 0;
    }

    ja ich habe zwar ein Programm womit ich es testen kann, aber ich komme darauf auch irgendwie noch nicht klar. Ich habe Microsoft visual studio express 2013 für windows.

    Das Problem ist wenn ich es testen lasse also ausführe kommt eine Fehlermeldung aber es zeigt nicht an wo es ist bzw. ist öffnet sich kein anderes Fenster oder ähnliches. Muss mich noch mit dem Programm auseinandersetzen.
    Oder empfehlt ihr mir ein anderes Programm?

    for(int i=a; i<=b;i++)
    

    das wäre ja komplett falsch oder nicht i++ zählt ja eins höher und i<=b ist auch falsch. bei ner Zahlenreihe kann man es gut nachvollziehen finde ich aber bei zwei bestimmten ganzen Zahlen kriege ich es nicht hin.

    LG



  • capri03 schrieb:

    for(int i=a; i<=b;i++)
    

    das wäre ja komplett falsch oder nicht i++ zählt ja eins höher und i<=b ist auch falsch. bei ner Zahlenreihe kann man es gut nachvollziehen finde ich aber bei zwei bestimmten ganzen Zahlen kriege ich es nicht hin.

    Wieso sollte das falsch sein? i geht von a bis einschließlich b.



  • capri03 schrieb:

    Das Problem ist wenn ich es testen lasse also ausführe kommt eine Fehlermeldung aber es zeigt nicht an wo es ist bzw. ist öffnet sich kein anderes Fenster oder ähnliches. Muss mich noch mit dem Programm auseinandersetzen.

    Das ist allerdings ein Problem. Die Lösung gehört allerdings nicht in diesen Thread.
    Für die Zwischenzeit kannst Du einen online-compiler benutzen. Meinetwegen http://coliru.stacked-crooked.com/.

    capri03 schrieb:

    for(int i=a; i<=b;i++)
    

    das wäre ja komplett falsch oder nicht i++ zählt ja eins höher und i<=b ist auch falsch. bei ner Zahlenreihe kann man es gut nachvollziehen finde ich aber bei zwei bestimmten ganzen Zahlen kriege ich es nicht hin.

    Du machst Dir glaube ich zuviele Gedanken - liegt sicherlich auch daran, dass Du den Code nicht einfach ausführen kannst. Es böte sich u.U. auch an, zum testen mal versuchen a und b näher aneinander zu rücken, z.B. Summe der Zahlen [17, 18] = 17 + 18 = 35. Oder so. 🙂



  • Wenn da etwas von Intervall steht, heisst das nicht, dass du zwei Zahlen addieren sollst. Du solltest dir also zunächst noch mal Gedanken über die Aufgabe machen.
    Die Schleife sieht (soweit du sie zeigst) richtig aus.
    Natürlich musst du dich mit deinem Compiler und deiner IDE vertraut machen. VS zeigt dir Compilerfehler mit Beschreibung und Zeilennummer im Output Fenster an.



  • Also nochmal danke für eure Antworten plus Kommentare bzw. Tipps. 🙂

    include <iostream>
    
    int main(int argc, char* argv[])
    {
    const int a=17;
    const int b=52;
    
    int summe=0; 
    for(int i=a; i<=b;i++)
    {
    std::cout << "Summe: " << summe;
    return 0;
    }
    

    also ich habe es noch nicht getestet das mache ich mal heute abend, da ich gleich unterwegs bin.
    Wenn noch etwas falsch sein sollte könnt ihr ja ruhig noch schreiben falls ihr lust habt.

    ich bedanke mich im voraus für eure Unterstützung

    LG



  • capri03 schrieb:

    also ich habe es noch nicht getestet das mache ich mal heute abend, da ich gleich unterwegs bin.
    Wenn noch etwas falsch sein sollte könnt ihr ja ruhig noch schreiben falls ihr lust habt.

    Der Ansatz ist leider komplett falsch.



  • Es sieht so aus, als hättest du was vergessen...



  • Nathan schrieb:

    capri03 schrieb:

    also ich habe es noch nicht getestet das mache ich mal heute abend, da ich gleich unterwegs bin.
    Wenn noch etwas falsch sein sollte könnt ihr ja ruhig noch schreiben falls ihr lust habt.

    Der Ansatz ist leider komplett falsch.

    Das ist jetzt etwas übertrieben. Zwei Zeilen einfügen und es tut, was es soll.



  • Wo findet denn hier eine Addition statt?

    include <iostream>
    
    int main(int argc, char* argv[])
    {
    const int a=17;
    const int b=52;
    
    int summe=0;
    for(int i=a; i<=b;i++)
    {
    std::cout << "Summe: " << summe;
    return 0;
    }
    

    EDIT:
    Hab ebenfalls ne Kleinigkeit vergessen, bei mir war's aber nur ein 'n'.


Log in to reply