Schleife



  • #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
    
        int wert=1;
    	int summe=0;
    
        while(wert <= 20)
    	{
    		if (wert%2)
    		    {
    				wert+=1;       /* Wert++ */
    				continue;
                }
    		summe+=wert;
            wert+=1;
    	printf("Die Summe betraegt : %d\n", summe);
    	}
    
    	printf("Die Summe betraegt : %d\n", summe);
    
    	system("PAUSE");
    	return 0;
    
    }
    

    Hallo,

    was macht das continue, wenn ich continue wegnehme bleibt es gleich!? Und was heißt wert%2? Ausserdem verstehe Ich nich richtig was diese Schleife bezwecken soll oder eher was sie macht? Ich sehe da raus das eigentlich immer nur 1+0 gerechnet wird und dann 2+0, 3+0... usw

    Bitte um eine Erklärung

    Danke im Voraus
    MfG Micha



  • continue beendet den aktuellen schleifendurchlauf und springt zum nächsten. % ist der modulo operator, liefert also den rest der ganzzahldivision. modulo 2 liefert dementsprechend immer 1 oder 0 und wird gern verwendet, um zwischen geraden und ungeraden zahlen zu unterscheiden.

    in deinem beispiel heisst das, dass "wert", wenn er gerade ungerade ist, um eins erhöhrt wird und die schleife dann zum nächsten schritt springt. wenn "wert" gerade ist, wird vorher wert auf summe addiert und anschliessend wert um 1 erhöht.

    was macht die schleife also? sie summiert alle geraden zahlen zwischen 1 und 20.



  • cpp?!

    #include <iostream>
    
    int main()
    {
        int value = 1;
        int sum = 0;
    
        while (value <= 20)
        {
            if (value % 2)
            {
                value += 1;
                continue;
            }
            sum += value;
            value += 1;
            std::cout << "Summe: " << sum << "; Wert: " << value << std::endl;
        }
    }
    

    ... so ... continue springt einfach direkt an das Ende der Schleife.
    => es werden nur gerade Zahlen addiert!
    kurzform:

    #include <iostream>
    
    int main() { for (unsigned n = 2; n == 20; n += 2) std::cout << n << std::endl; }
    

    ...



  • Und für was kann man so etwas gebrauchen ?
    Aber wenn Ich continue herausnehme kommt das Gleiche raus...



  • achso...

    wenn ich continue wegnehme bleibt es gleich!?

    das stimmt. warum das so ist, kannst du jetzt aber selbst rausfinden 😉



  • Und für was kann man so etwas gebrauchen ?

    bsw. wenn ein Fehler in einer Schleife auftritt, du deswegen aber nicht direkt die Schleife beenden willst, sondern nur das nächste Objekt haben willst.

    #include <iostream>
    
    int main()
    {
        int value = 1;
        int sum = 0;
    
        while (value <= 20) // value = 1; value = 2; value = 3
        {
            if (value % 2) // value % 2 = 1; value % 2 = 0; value % 2 = 1;
            {
                value += 1; // value = 2; ; value = 4
                continue;
            }
            sum += value; // ; 0 + 2 = sum; 
            value += 1; // ; value = 3;
            std::cout << "Summe: " << sum << "; Wert: " << value << std::endl;
        }
    }
    
    [cpp]#include <iostream>
    
    int main()
    {
        int value = 1;
        int sum = 0;
    
        while (value <= 20) // value = 1; value = 2; value = 3
        {
            if (value % 2) // value % 2 = 1; value % 2 = 0; value % 2 = 1;
            {
                value += 1; // value = 2; ; value = 4
            }
            sum += value; // 0 + 2 = sum; 2 + 2 = sum; 4 + 4 = sum
            value += 1; // value = 2; value = 3; value = 5
            std::cout << "Summe: " << sum << "; Wert: " << value << std::endl;
        }
    }
    

    oder so ähnlich 😃



  • Also geht das auch so:

    int wert2;
    	int summe2=0;
    
    	for(wert2 = 1; wert2 <= 20; wert2++)
    	    {
    			if(wert2%2)
    				continue;
    			summe2+=wert2;
    			printf("Die Summe betraegt : %d\n", summe2);
    		}
    


  • Dabei muss nämlich contnue verwendet werden


Anmelden zum Antworten