for break Schleife hört nicht auf zu arbeiten!



  • Hey Leute,

    bin noch Anfänger in Sachen C und komme hier einfach nicht weiter.
    Meine for break Schleife hört einfach nicht auf zu arbeiten! Sie fängt direkt wieder von vorne an, nur wieso? Mich treibt das in den Wahnsinn! Ich hoffe ihr könnt meinen Fehler aufdecken.
    Danke schon mal im voraus! 🙂

    for (;;)
      {
            printf("Your guess please (%d. try):", g);
            scanf("%d",&t);
            if (t>r)
            {
                    printf("Too high!\n");
                    g++;
            }
            if (t<r)
            {
                    printf("Too low!\n");
                    g++;
            } 
            if (t==r)
            {
                    printf("You won!\nYou only needed %d tries!\n",g);
                    break;
            }    
    
      }
    


  • hi,

    ...Sie fängt direkt wieder von vorne an...

    vermutlich errätst du deine eigene zahl nicht,:D,
    d.h. es wird nicht t==r.

    oder aber, eher wahrscheinlich, gibst du ein zeichen ein, das keine zahl ist!
    scanf gibt die anzahl der erfolgreich konvertierten elemente zurück.
    es ist ratsam, den rückgabewert von scanf zu prüfen.
    scanf sollte also in diesem fall eine 1 zurückgeben, bevor das programm weiter laufen darf.



  • wie kommst du eigentlich auf den begriff for break schleife?



  • b.b. schrieb:

    vermutlich errätst du deine eigene zahl nicht,:D,
    d.h. es wird nicht t==r.

    Habs eben mal sicherheitshalber überprüft. Hab r ausgeben lassen und dann diese Zahl eingetippt. Also erraten tu ich sie 😉

    b.b. schrieb:

    oder aber, eher wahrscheinlich, gibst du ein zeichen ein, das keine zahl ist!

    Da bin ich mir eigentlich sehr sicher, dass ich Zahlen eingebe! 😃

    b.b. schrieb:

    scanf gibt die anzahl der erfolgreich konvertierten elemente zurück.
    es ist ratsam, den rückgabewert von scanf zu prüfen.
    scanf sollte also in diesem fall eine 1 zurückgeben, bevor das programm weiter laufen darf.

    Check! Rückgabewert ist 1.

    b.b. schrieb:

    wie kommst du eigentlich auf den begriff for break schleife?

    Gute Frage. Hatte in dem Moment wohl nen kleinen kreativen Schub. Wollte nen möglichst passenden Threadtitel wählen. 😃



  • Haxbraten schrieb:

    Da bin ich mir eigentlich sehr sicher, dass ich Zahlen eingebe! 😃

    hmmmmm ..... dann gibst du vllt. eine zahl im hexadezimalsystem ein, die buchstaben enthält? 😃
    z.b. 1e oder so ...

    werden im programm vor der for schleife noch weitere eingaben gemacht?
    wenn ja, was passiert, wenn du vor der for schleife das hier einfügst:

    {
    int c = getchar();
    printf("%d %c", c, c);
    }
    

    wird etwas ausgegeben bevor du etwas eingeben kannst?
    (klingt doof, könnte aber sein ... )



  • So, habs selbst gelöst. Hat doch tatsächlich ne Schleife obendrüber gesponnen. Sorry für den Fehlalarm 😞 Und vielen Dank für deine Hilfe b. b. 🙂

    Kann geclosed werden.



  • b.b. schrieb:

    hi,

    ...Sie fängt direkt wieder von vorne an...

    vermutlich errätst du deine eigene zahl nicht,:D,
    d.h. es wird nicht t==r.

    Das würde er sicher daran merken, dass der entsprchende Text nicht ausgegeben wird ...


Anmelden zum Antworten