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 -