Do While Loop



  • Hey,

    ich bin gerade dabei C zu lernen und finde beim besten Willen gerade ein Problem bei nem Do While Loop nicht.

    Ich möchte den User so lange nach einer Zahl fragen bis sie zwischen 0 und 23 liegt. Mein Code sieht so aus:

    int main(void)

    {
        int height;
        do
        { 
            printf("Typ in a number between 0 and 23: ");
            height = GetInt(); 
        }
        while (height > 0 && height <= 23);
    
        return 0;
    
    }
    

    Leider aktzeptiert er alle Werte. Dreh ich die Operatoren > und <= um kann ich allerdings nur Werte ausserhalb der Range eingeben, so rum funktioniert der Code also. Jemand eine Idee?


  • Mod

    Ich übersetze mal: Führe die Schleife durch, solange height größer als 0 und height kleinergleich 23 ist. Siehst du nun, deinen Logikfehler?



  • Das while heißt übersetzt solange.
    Solange die Bedingung wahr ist, wird die Schleife ausgeführt.

    Das ist keine repaeat-until-Schleife.



  • SeppJ schrieb:

    Ich übersetze mal: Führe die Schleife durch, solange height größer als 0 und height kleinergleich 23 ist. Siehst du nun, deinen Logikfehler?

    Sorry, klar, da hatte ich es gerade andersrum um zu testen obs ausserhalb der range funktioniert.

    Natürlich muss der Code so sein:

    {
        int height;
        do
        { 
            printf("Typ in a number between 0 and 23: ");
            height = GetInt(); 
        }
        while (height < 0 && height >= 23);
    
        return 0;
    
    }
    

    Also frage wieder sobald height kleiner als null und größer als 23 ist. Trotzdem geht es nicht.



  • Wis soll die Zahl denn gleichzeitig kleiner Null und größergleich 23 sein?
    Eins geht nur.

    Da musst du noch etwas anderes ändern. Oder?



  • Stimmt, klar, danke. Wenn man neu anfängt sieht man solche einfachen Dinge nicht manchmal 😃

    Ich habs nun mit || gemacht.

    Dankeschön


Anmelden zum Antworten