Do-While Schleife in If-Else einbauen



  • Hallo,
    ich habe folgendes Problem: Ich möchte ein Programm schreiben, bei dem man gewürfelte Zahlen eingeben muss. Falls man Zahlen eingibt, die größer als 6 sind, soll eine Mahnung kommen und eine Schleife, die wieder zur Eingabeaufforderung der gewürfelten Zahl führen soll.
    Das ganze wollte ich so realisieren:

    do {
    printf("%s wuerfelt:",student1);
    scanf_s(" %i",&wuerfel1);
    if(wuerfel1>6) {
    printf("Ungueltige Eingabe!\n");
    } while (wuerfel1>6);
    }
    else ...

    Und hier ist auch schon das Problem: Ich muss einmal "Ungueltige Eingabe" ausgeben und die while-Schleife schließen, deshalb brauche ich nach dem "if" die geschweiften Klammern, allerdings beissen sich diese mit den geschweiften Klammern der Do-While Schleife...
    Habt ihr eine Idee, wie man es sonst noch machen könnte??

    Gruß



  • Du kannst die verschiedenen Kontrollstrukturen nicht miteinander verschränken. Das heißt, wenn das if() innerhalb der Schleife steht, muß auch das dazugehörige else in der Schleife sein (direkt hinter dem if) - wenn du es überhaupt brauchst. Aber deine Schleife ist ja schon so aufgebaut, daß am Ende ein gültiger Wert angegeben ist (mal davon abgesehen, daß du negative Werte nicht abfängst).

    PS: Interessante Methode zu würfeln - hast du keine Angst, daß die Spieler da mogeln?



  • do
    {
      printf("%s wuerfelt:",student1);
      scanf("%d",&wuerfel1);
    }
    while( wuerfel1>6 && puts("Ungueltige Eingabe!") );
    


  • CStoll schrieb:

    PS: Interessante Methode zu würfeln - hast du keine Angst, daß die Spieler da mogeln?

    Das ganze soll eigtl kein Spiel werden mit mogeln etc, sondern nur eine Absicherung, falls man sich vertippt.

    @Wutz: Danke, habs jetzt so gemacht, aber dann funktioniert die Do-While Schleife iwie nicht mehr...an was kann das liegen??



  • Ersetze mal puts durch printf.
    Die Schleife wiederholt, solange der Werte >6 ist.



  • Wutz schrieb:

    Ersetze mal puts durch printf.
    Die Schleife wiederholt, solange der Werte >6 ist.

    So funktioniert!
    Danke dir!


Anmelden zum Antworten