Schleifenabbruch mit coninue Problem Summe aller geraden zahlen 1 bis 20



  • #include <stdio.h>
         int main()
    {
         int wert  = 1;       /* Deklarieren einer int Variable 'wert'  */
         int summe = 0;       /* Deklarieren einer int Variable 'summe' */
    
               while(summe <=20)  /* while Schleife summe kleiner/gleich 20 */
            {
                                if(wert%2)   /*if-Verzweigung Modulo,gerade wenn */
                            {                /* Rest durch 2 teilbar     */
                                wert++;      /* Inkrementieren von wert */
                                continue;    /* Schleifenabbruch mit continue */
                            }
               summe += wert;               /* Summe + 1 = wert */
               wert++;                      /* Inkrementieren von Wert */
            }
            /* While Schleife beginnt von neuem bis Wert < = 20 */
            printf("Die Summe betraegt : %d\n" ,summe);
            return 0;
    }
    

    Mein Ergebnis ist nun 30. Zu berechnen sollte ich die Summe aller Zahlen zwischen 1 und 20. Ich soll nur die Summe aller geraden Zahlen erhalten.
    Das wäre dann doch:
    2 + 4 + 6 + 8 + 10 + 12 + 14 + 16 +18 +20 ???
    --> Was habe ich falsch gemacht?



  • while(summe <=20)
    


  • Du bringst wert und summe durcheinander.

    while(wert<=20)  
     {
       if(wert%2)   
         summe += wert;     
       wert++;                      
     }
    

    Da es eine Zählschleif ist, sieht for etwas besser aus:

    for(wert=1,summe=0;wert<=20;++wert)
      if(wert%2)   
        summe += wert;
    


  • #include <stdio.h>
    int main()
    {
        int wert;
        int summe = 0;
    
        for(wert=2; wert<=20; wert+=2)
            summe+=wert;
    
        printf("Die Summe betraegt : %d\n" ,summe);
        return 0;
    }
    


  • #include <stdio.h>
    int main()
    {
        int obergrenze = 20;
        printf("Die Summe betraegt : %d\n" ,(obergrenze/2)*(obergrenze/2+1));
        return 0;
    }
    


  • Wenn ich die for-Schleife nehme komme ich schon einmal auf den richtigen Wert (:
    Kann ich denn auch mit der while( wert <= 20) weiterrechnen? Also wo ist da der genaue Fehler, das wird mir gerade noch nciht bewusst



  • @volkard
    Gratulation, du warst schneller.
    Denn kleinen Gauß wollte ich auch gerade schreiben 🙂



  • Du hörst auf, wenn die Summe > 20 ist.
    Dabei wilst du solange rechnen, wie wert <= 20 ist.

    Und dein Schleifeninhalt ist viel zu kompliziert.



  • Zwiebels schrieb:

    Kann ich denn auch mit der while( wert <= 20) weiterrechnen?

    Ja.



  • Danke - hab den Punkt nun auch verstanden (: -

    -closed -


Log in to reply