Problem bei Mastermind



  • Hat sich erledigt 😉



  • Du musst einmal bei Programmstart srand aufrufen.

    http://www.cplusplus.com/reference/clibrary/cstdlib/srand/

    Und was heißt 'hängt sich auf'? Endlosschleife? Geh doch mal schrittweise mit dem Debugger durch, dann findet sich der Fehler sicher schnell.

    P.S.: Deine Einrückung ist grausig. Hier gibts Beispiele für eine schöne, ordentliche (und vor allem konsistente) Einrückung:

    http://de.wikipedia.org/wiki/Einrückungsstil



  • Wenn ich das Programm starte geht nach dem zweiten Durchlauf nichts mehr wenn ich andere Werte eingebe.

    srand habe ich eingefügt.
    Aber du hast Recht. Ich versuchs mittm Debugger.

    MfG

    kiyoto



  • Was ist das denn hier eigentlich?

    for(j=0j<i;j++)  //Semikolon fehlt => Compiler-Error
    

    Hast du den ganzen Code etwa abgetippt? 😉



  • _matze schrieb:

    Was ist das denn hier eigentlich?

    for(j=0j<i;j++)  //Semikolon fehlt => Compiler-Error
    

    Hast du den ganzen Code etwa abgetippt? 😉

    Wo steht das denn nur? 😕



  • #mngbd schrieb:

    _matze schrieb:

    Was ist das denn hier eigentlich?

    for(j=0j<i;j++)  //Semikolon fehlt => Compiler-Error
    

    Hast du den ganzen Code etwa abgetippt? 😉

    Wo steht das denn nur? 😕

    Na er hat sein Posting editiert. Vorher stand dieser Code da (bei der Gelegenheit gleich mal ordentlich eingerückt):

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    #include <time.h>
    
    int main()                                                                      
    {
    	int spielverlauf[10][2];
    	int rateanzahl[10][5];
    	int Farben[9];
    	int versuche=0;
    	int ver,geht,cver;
    	int treffer,daneben;
    	int i,j,z;
    	int runde;
    	char ein[10];
    
    	srand(time(NULL));
    
    	printf("\t\tDer Computer spielt MASTERMIND\n");
    	printf("\t\t------------------------------\n\n");
    	printf("\tDenk dir eine Kombination von 5 Farben aus!\n");
    	printf("\n\t");
    	printf("\n\t0\t1\t2\t3\t4\t5\t6\t7\n");
    	printf("\trot \tgruen \tgelb \torange \tpink \tblau \tbeige \tbraun\n");
    	printf("\t");
    
    	getchar();
    	treffer=-1;
    
    	/*Initialisierung der Farben*/                
    	Farben[0] ='0';
    	Farben[1] ='1';
    	Farben[2] ='2';
    	Farben[3] ='3';
    	Farben[4] ='4';
    	Farben[5] ='5';
    	Farben[6] ='6';
    	Farben[7] ='7';
    
    	while(treffer<5)
    	{
    		versuche++;
    		geht=0;
    		ver=0;
    
    		while(geht==0)
    		{
    			ver++;
    
    			for(i=0;i<5;i++)
    			{
    				runde=1;
    
    				/*Erstellen von Zufallszahlen*/
    				while(runde==1)
    				{
    					rateanzahl[versuche][i]=(int)floor(8*((double)rand()/(double)RAND_MAX));
    					runde = 0;
    
    					if(i>0)
    					{
    
    						for(j=0j<i;j++)
    						{
    
    							if(rateanzahl[versuche][j]==rateanzahl[versuche][i])
    								runde=1;
    						}
    					}
    				}
    			}
    
    			geht=1;
    
    			if(versuche>1)
    			{
    				for(cver = 1; cver<versuche; cver++)
    				{
    					if( (treffer!=spielverlauf[cver][0])|| (daneben!=spielverlauf[cver][1]))
    					{
    						geht=0;
    					}
    				}
    			}
    		}
    
    		printf("\n\tIch denke es ist ");
    
    		for(i=0; i<5;i++)
    		{
    			printf("%c",Farben[rateanzahl[versuche][i]]);
    		}
    
    		printf("\n");
    		treffer=-1;
    		daneben=-1;
    
    		while((treffer>5)||(treffer<0))
    		{
    			printf("\tWie viele Farben kommen vor und sind an der richtigen Stelle? ");
    			fgets(ein,10,stdin);
    
    			if((sscanf(ein,"%i",&treffer)==0)||(treffer>5)||(treffer<0))
    
    				printf("\n\tFalsche Eingabe\n\n");
    		}
    
    		while((treffer<5)&&((daneben<0)||(daneben>5)))
    		{                                    
    			printf("\tWieviele Farben sind nicht an der richtigen Position? ");
    			fgets(ein,10,stdin);
    
    			if((sscanf(ein,"%i",&daneben)==0)||(daneben>5)||(daneben<0))
    
    				printf("\tFalsche Eingabe!\n\n");
    		}
    
    		printf("\tOK;-)\n");
    		spielverlauf[versuche][0]=treffer;
    		spielverlauf[versuche][1]=daneben;
    	}
    
    	printf("\n\tGewonnen! Versuche: %i\n\n",versuche);
    	system("PAUSE");
    	return 0;
    
    }
    


  • _matze schrieb:

    Was ist das denn hier eigentlich?

    for(j=0j<i;j++)  //Semikolon fehlt => Compiler-Error
    

    Hast du den ganzen Code etwa abgetippt? 😉

    Da muss beim einkopieren etwas verloren gegangen sein.
    Bei mir ist das Semikolon drin sonst gibt es nämlich einen Compiler_Error wie bei dir.

    Programm bleibt trotzdem einfach stehen nachdem man bei der zweiten Abfrage andere Werte eingibt was ich nicht verstehe.

    Und außerdem tippe ich keine Texte ab sondern, angenommen das ich so etwas mache,
    kopiere diese direkt komplett. 😉



  • kiyoto schrieb:

    Und außerdem tippe ich keine Texte ab

    Du würdest dich wundern, wieviele sowas tatsächlich machen... 😃

    kiyoto schrieb:

    Programm bleibt trotzdem einfach stehen nachdem man bei der zweiten Abfrage andere Werte eingibt was ich nicht verstehe.

    Und wo steht dein Programm dann (->Debugger)?



  • Kümmer mich mal um den gdb

    MfG

    kiyoto


Anmelden zum Antworten