Gerade Zahlen aufsummieren



  • Hi ich habe ein kleines Programm geschrieben dass mir die eingegebene Zahl einliest und mir die Summe der geraden Zahlen ausgibt. Ich möchte nun aber auch dass es mir die Anzahl der Sequenz ausgibt.

    Also wenn ich 10 eingebe erhalte ich für die Summe 30. Ich möchte aber auch dass es mir die Anzahl der Zahlen anzeigt. Also in dem Fall wäre es 5. Wie kann ich dies umsetzen? Danke

    #include <stdio.h>
    
    int main()
    {
    
    int num, count = 1, sum = 0;
    
    printf("Geben Sie eine Zahl ein\n");
    scanf("%d", &num);
    
    while(count <= num)
    {
        if(count%2 == 0)
        {
            sum = sum + count;
    
        }
        count++;
    }
    printf("Summe der geraden zahlen 1 to %d is %d\n", num, sum);
    return 0;
    }
    
    


  • Wenn du das Programm wirklich selbst geschrieben hast, kann ich mir beim besten Willen nicht vorstellen dass du nicht fähig bist da 2-3 weitere Zeilen reinzuschreiben um auch noch die Anzahl der aufsummierten Zahlen mitzuzählen und auszugeben.



  • @hustbaer sagte in Gerade Zahlen aufsummieren:

    ... mitzuzählen ...

    Auf den ersten Blick glaube ich,

    count / 2
    

    passt schon ...



  • @Belli Natürlich kann man es auch ohne Mitzählen ausrechnen. Genau so könnte man die Schleife auch abändern so dass sie gleich nur gerade Zahlen durchspult. Oder die Schleife auch für sum ganz optimieren und das "direkt" ausrechnen. Ich wollte das einfach auf dem Niveau der Frage halten 🙂

    @Belli sagte in Gerade Zahlen aufsummieren:

    Auf den ersten Blick glaube ich,

    count / 2
    

    passt schon ...

    Nope. Nicht wenn man eine ungerade Zahl für num eingibt.

    Deswegen: lieber erstmal Ball flach halten wenn die Frage dermassen basic ist. "Optimieren" kann man das dann später.



  • @hustbaer sagte in Gerade Zahlen aufsummieren:

    Nope. Nicht wenn man eine ungerade Zahl für num eingibt.

    Ich nehme an: Doch.

    Bei 9 soll vermutlich 4 rauskommen. Die 0 zählt offenbar nicht mit, denn die eingegebene Zahl scheint "inklusive" zu sein (denn die Summe 30 ergibt sich aus 10 + 8 + 6 + 4 + 2) - und wenn da bei "Anzahl" 5 rauskommen soll, wurde die 0 wohl nicht gezählt.



  • @hustbaer sagte in Gerade Zahlen aufsummieren:

    Ich wollte das einfach auf dem Niveau der Frage halten 🙂

    Das ist auf jeden Fall eine gute Idee!
    Ich wollte auch gar nicht im Sinne von Optimierung oder so verstanden werden, sondern mit so wenig wie möglich Änderung/Ergänzung am Ursprungscode - ohne kryptisch zu werden - zum Ziel kommen.



  • @hustbaer sagte in Gerade Zahlen aufsummieren:

    "Optimieren" kann man das dann später.

    Das wäre dann ja 0, weil man keine Schleife mehr nimmt.



  • @wob
    Eingabe num = 3
    Gezählt wird nur die 2 (einzige gerade Zahl >= 1 und <= 3).
    Summe ist also auch 2.
    Anzahl der Zahlen die gezählt wurden ist 1 (0 nicht mitgezählt).
    Nach dem Loop ist aber count = 4.
    4 / 2 ist 2. Und nicht 1.

    vs.

    Eingabe num = 2
    Gezählt wird nur die 2 (einzige gerade Zahl >= 1 und <= 2).
    Summe ist also auch 2.
    Anzahl der Zahlen die gezählt wurden ist 1 (0 nicht mitgezählt).
    Nach dem Loop ist count = 3.
    3 / 2 ist 1. Passt.

    Wenn dann müsste man also (count - 1) / 2 rechnen. Oder (count + 1) / 2 wenn man die 0 mitzählen will. Aber auf keinen Fall count / 2.

    ps: Kann es sein dass ihr hier beide num und count verwechselt habt? Die Eingabe ist num, count ist der Schleifenzähler, und nach dem Verlassen gleich num + 1.
    D.h. man könnte auch gleich num / 2 nehmen.



  • 😱

    Mist, verdammter! Du hast natürlich Recht. Ich hatte irgendwie angenommen, dass count die eingegebene Zahl wäre. num/2 statt count/2.



  • Das kann man doch sicher irgendwie elogant mit den Ideen von Gauss lösen.



  • @hustbaer sagte in Gerade Zahlen aufsummieren:

    Nach dem Loop ist aber count = 4.

    Da hab ich einfach nicht dran gedacht, also dann wohl:

    (count - 1) / 2;
    


  • @jasmin89 Kennst Du nicht die Geschichte von Carl Friedrich?

    Ein Lehrer hatte keine Lust zum Unterrichten sondern wollte Zeitung lesen (oder was anderes). Also beschäftigte er seine Schüler indem er sie alle natürlichen Zahlen von 1 bis 100 addieren liest. Jeder, der fertig sei, dürfe nach Hause gehen. Nach nur 5 Minuten brachte Carl Friedrich Gaus das korrekte Ergebnis und der Leher war ersteinmal damit beschäftigt das Ergebnis zu überprüfen.


Anmelden zum Antworten