Fragen zur for Schleife



  • Geben Sie für die folgenden for-Schleifen an welche Werte jeweils die Zählvariable animmt und wie oft sie durchlaufen werden.
    a)
    for(i=0; i<5; i++)

    0,1,2,3,4,(Das sind die Zählvariablen
    Die Schleife wird fünfmal durchlaufen???????
    b)
    for(n=10; n>0; n=n--)

    10,9,8,7,6,5,4,3,2,1 Zählvariablen
    Die Schleife wird 10-mal durchlaufen?????????????

    c)
    for(anfang=0;anfang<3;anfang=anfang+0,5)

    0;0,5;1;1,5;2;2,5; Sind dies die Zählvariablen
    Die Schleife wird 6 mal durchlaufen



  • tobifeli schrieb:

    Geben Sie für die folgenden for-Schleifen an welche Werte jeweils die Zählvariable animmt und wie oft sie durchlaufen werden.
    a)
    for(i=0; i<5; i++)

    0,1,2,3,4,(Das sind die Zählvariablen
    Die Schleife wird fünfmal durchlaufen???????
    b)
    for(n=10; n>0; n=n--)

    10,9,8,7,6,5,4,3,2,1 Zählvariablen
    Die Schleife wird 10-mal durchlaufen?????????????

    c)
    for(anfang=0;anfang<3;anfang=anfang+0,5)

    0;0,5;1;1,5;2;2,5; Sind dies die Zählvariablen
    Die Schleife wird 6 mal durchlaufen

    Was ist jetzt deine Frage ? Ist wohl logisch wie oft die durchlaufen.
    Ach ja, ein Satzzeichen reicht, das gespamme von lässt den Satz eher bescheuert aussehen.



  • das ist alles richtig wenn Du in der letzten Schleife die 0,5 durch 0.5 austauschst!

    Kann man aber auch sehr schnell selbst ausprobieren!



  • Falls i bzw. n im Schleifenrumpf nicht geändert wird, sind Deine Antworten für a) und b) richtig. Davon soll man vermutlich ausgehen, aber ausgeschlossen ist es halt nicht.

    Bei c) hängt es davon ab, welchen Typ anfang hat. Bei float oder double stimmt Deine Antwort - aber auch nur deshalb, weil 0.5 genau darstellbar ist. Ansonsten Finger weg von float und double, insbesondere als Laufvariablen!
    Falls anfang ein Integer-Typ ist, ist Deine Antwort falsch.



  • n=n--
    

    führt zu einer Endlosschleife...

    Gemeint ist also wohl "n--" bzw. "n=n-1".



  • Müsste man nicht antworten, dass die Zählvariable jeweils noch einen weiteren Wert annimmt, mit dem die Schleife zwar nicht mehr durchlaufen wird, aber der für den Abbruch sorgt? :xmas1:



  • tobifeli schrieb:

    c)
    for(anfang=0;anfang<3;anfang=anfang+0,5)

    Welchen Typ haben den die Variablen ?
    Ich nehme mal an die ersten zwei Schleifen int.

    Gruss Sheldor



  • wieso?

    klar float und double sidn ungenau, aber da gehts ja nicht um gleichheit
    grösser/kleienr sind auch bei gleitkommazahlen 100pro richtig...



  • Th69 schrieb:

    n=n--
    

    führt zu einer Endlosschleife...

    Gemeint ist also wohl "n--" bzw. "n=n-1".

    Oops, ja.

    Sheldor schrieb:

    tobifeli schrieb:

    c)
    for(anfang=0;anfang<3;anfang=anfang+0,5)

    Welchen Typ haben den die Variablen ?

    Skym0sh0 schrieb:

    wieso?

    Wenn es ints sind, unterscheidet sich das Ergebnis davon, wie wenn es floats sind.

    klar float und double sidn ungenau, aber da gehts ja nicht um gleichheit
    grösser/kleienr sind auch bei gleitkommazahlen 100pro richtig...

    Nein, eben nicht. Ob 3*(1./3) größer, kleiner oder gleich 1 ist, hängt davon ab, wie gerundet wird. Und genau so einen Fall hätten wir hier - wenn nicht zufällig 0.5 genau darstellbar wäre.



  • lawine schrieb:

    Müsste man nicht antworten, dass die Zählvariable jeweils noch einen weiteren Wert annimmt, mit dem die Schleife zwar nicht mehr durchlaufen wird, aber der für den Abbruch sorgt? :xmas1:

    Genau das war auch mein erster Gedanke!



  • n=n--
    

    erzeugt undefiniertes Verhalten (Zuweisung ist kein Sequenzpunkt!).


Anmelden zum Antworten