//Spiel: Die verflixte N #include const unsigned maxAnzahlMitspieler = 10; const unsigned UntergrenzeVerflixteN = 2; const unsigned ObergrenzeVerflixteN = 10; int main() { /*Anzahl der Mitspieler eines Spiels und dessen aktuelle Spieler*/ int AnzahlMitspieler, aktuelleAnzahlMitspieler; /*verflixte N*/ int verflixteN; /*die naechste gueltige Eingabe und zur Berechnung eine Hilfsvariable*/ int naechsteGueltigeN, hilf, hilf2; /*die aktuelle Eingabe*/ int eingegebeneN; /*Zaehlvariable*/ int i; /*Feld der gueltigen Spieler*/ int gueltigeSpieler[10]; /*Initialisierung mit Anfangswerten*/ AnzahlMitspieler = 0; aktuelleAnzahlMitspieler= 0; verflixteN = 0; naechsteGueltigeN = 0; hilf=hilf2 = 0; eingegebeneN = 0; i = 0; do { /*Anzahl Mitspieler einlesen, maximal 10 Spieler*/ do { printf("Anzahl Mitspieler (maximal 10): ", AnzahlMitspieler); scanf("%d", &AnzahlMitspieler); aktuelleAnzahlMitspieler = AnzahlMitspieler; if (AnzahlMitspieler > maxAnzahlMitspieler) { printf("Anzahl Mitspieler darf maximal 10 betragen. Bitte Eingabe wiederholen. Eine Null beendet das Spiel.\n"); } } while (AnzahlMitspieler > maxAnzahlMitspieler); /*Gueltige Spieler mit 1 markieren*/ for (i=0;i 0) { do { printf("verflixte N [2-9]: ", verflixteN); scanf("%d", &verflixteN); }while((verflixteNObergrenzeVerflixteN)); } /*Spielbeginn, falls Spielinteressenten vorhanden.*/ /*Mit Spieler 1 beginnen.*/ i=0; while(aktuelleAnzahlMitspieler > 0) { /*So jetzt kann das eigentliche Spiel beginnen.*/ /*Bestimmung der naechsten gueltigen Zahl*/ /*TEST: Ist die naechste gueltige Zahl durch die verflixteN teilbar,*/ /* oder ist die Ziffer "verflixteN" enthalten. */ do { naechsteGueltigeN++; hilf = naechsteGueltigeN; hilf2=0; do { if ((hilf%10)==verflixteN) { hilf2 = 1; hilf = 0; } else { hilf = hilf / 10; } }while (hilf>0); } while( ((naechsteGueltigeN%verflixteN)==0) || (hilf2==1) ); /*Ende der Bestimmung der naechsten gueltigen Zahl*/ /*Naechster berechtigte Spieler*/ while(gueltigeSpieler[i]==0) { i ++; /*Die Runde faengt neu an*/ if (i >= AnzahlMitspieler) { i = 0; } } /*Einlesen der Eingabe des aktuellen Spielers.*/ printf("Eingabe des Spielers %d: ", i+1); scanf("%d", &eingegebeneN); /*Eingabe auf Gueltigkeit pruefen.*/ if (eingegebeneN != naechsteGueltigeN) { /*Falscheingabe Spieler scheidet aus.*/ aktuelleAnzahlMitspieler--; gueltigeSpieler[i]=0; printf("Falscheingabe, die richtige Eingabe waere %d gewesen.\n", naechsteGueltigeN); printf("Spieler %d ist ausgeschieden, jetzt sind noch %d Spieler im Spiel.\n", i +1, aktuelleAnzahlMitspieler); } /*Naechster Spieler*/ i ++; } /*naechste gueltige Zahl, bei Null wird mit der Rechnung begonnen.*/ naechsteGueltigeN = 0; }while (AnzahlMitspieler > 0); return 0; }