Problem mit streichhölzerspiel



  • Hi!
    Bin neu hier. Hab folgendes Problem; Die Aufgabe ist, ein Programm zu erstellen, wo N Streichhölzer auf dem Tisch liegen und daraus ein Spiel zu machen bei dem maximal k streichhölzer pro Zug gezogen werden dürfen. Gespielt wird gegen den PC. Der menschliche Spieler hat den ersten Zug. Gewinnzahlen sind durch folgende Fkt gegeben x(k+1)+1 = N Das ist was ich bis jetzt habe:

    #include <stdio.h>
    int N,k;
    
    int spielbeginn (N, k)
    {
    	printf ("Es liegen noch %d Streichhoelzer auf dem Tisch. " ,N);
    	if (N<1) printf ("Spielende\n");
    	else spielerzug (N, k);
    }
    
    int spielerzug (N, k)
    {
    	int n;
    	printf("Wieviele Streichhölzer möchten sie ziehen? maximum = %d\n", k);
    	scanf("%d", &n);
    
    	N = N - n;
    
    	computerzug (N, k);
    }
    
    int computerzug (N, k)
    {
    	int x;
    	if (N%(k+1)==1)
    	{
    		x = (N-1)/(k+1);
    		N = N - x;
    	}
    
    	if (N%(k+1) == 0)
    	{
    		x = (N-1)/(k+2);
    		N = N-x;
    		spielbeginn (N, k);
    	}
    }
    
    int main ()
    {
    	int sh, max_sh;
    	printf ("Hallo. Wieviele Streichhoelzer liegen auf dem Tisch?\n");
    	scanf ("%d", &sh);
    	printf ("Wieviele Streichhoelzer dürfen maximal gezogen werden?\n");
    	scanf ("%d", &max_sh);
    	spielbeginn (sh, max_sh);
    	return (0);
    }
    

    Diese Form sollte beibehalten werden, da wir das ganze in 3 Fkten lösen müssen.
    Hoffe bin hier richtig.

    Vielen Dank

    Sixty



  • Dieser Thread wurde von Moderator/in volkard aus dem Forum C++ in das Forum ANSI C verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • 1. Du hast die Frage vergessen! Wo hast du konkret Schwierigkeiten?

    2. Dein Code weist schon mehrere Fehler auf und ist sicher nicht kompilierbar. Das könntest du ruhig erwähnen. Dein knapper, einleitender Text hört sich eher nach einem Ablaufproblem an, dein Code weist aber erstmal einige Syntaxfehler auf. Möchtest du diese behoben haben, solltest du sie auch beschreiben (Fehlermeldung, Zeile...).

    3. Du kannst (und solltest) deinen Code in cpp-Tags einbinden, damit er auch lesbar ist: http://c-plusplus.net/forum/faq.php?mode=bbcode#0



  • @matze: Sry hast recht, hab ich heut morgen auf die schnelle gemacht.
    Proggy kommt ohne Probs durch den Kompiler.

    Mein Problem ist folgendes (von den anderen mal abgesehen - die kann ich selbst lösen): Es geht mir um die logische struktur. Und zwar, in der Fkt Computerzug; Wie kann ich dem Computer klarmachen, dass er soviele streichhölzer wegnimmt, dass eine Gewinnzahl übrigbleibt? (Er also gewinnt) ich müsste die Fkt (N-x-1)%(k+1) == 1 nach x auflösen lassen. Hab aber keine Ahnung wie man nen Modolo umstellt.
    Allgemein ist also eigentl die computerzug Fkt mein Problem. Kann mir da irgendwer helfen?

    Danke im Vorraus



  • (N-x-1)%(k+1) == 1 nach x auflösen
    Ich versuchs mal.

    (N-x-1)%(k+1) == 1%(k+1)

    (N-1)%(k+1) - (x)%(k+1) == 1%(k+1)

    (N-1)%(k+1) == 1%(k+1) + (x)%(k+1)

    (N-1)%(k+1) - 1%(k+1) == (x)%(k+1)

    (x)%(k+1) == (N-1)%(k+1) - 1%(k+1)

    x = (N-2)%(k+1)



  • @volkard: Danke. Wie kommst du auf den ersten schritt? (N-x-1)%(k+1) == 1%(k+1)

    und ist dann immer noch die bedingung erfüllt das der Rest genau == 1 ist?



  • sixty0069 schrieb:

    @volkard: Danke. Wie kommst du auf den ersten schritt? (N-x-1)%(k+1) == 1%(k+1)

    1 == 1%(egal was)

    sixty0069 schrieb:

    und ist dann immer noch die bedingung erfüllt das der Rest genau == 1 ist?

    versteh ich nicht. und ich weiß auch nicht, ob die rechnung fehlerfrei ist. das sollte nur ein hinweis sein, daß du dich einfach rantrauen sollst. "ich weiß nicht, wie es geht" ist beim programmieren einfach kein argument. 🤡


Log in to reply