Título: Juego mastermind Publicado por: Raskera en 26 Abril 2019, 19:57 pm El programa pide q el ordenador adivine un número q yo pienso y me he encallado en como seguir...
Ayudaaaaaa!!! #include<stdio.h> #include<stdlib.h> #include<time.h> #include<math.h> #define MAXDIGIT 6 #define XIFRES 4 #define MAXTRIES 100 void endevina (int); void comptaEncerts (int[],int[],int*,int*); void mostra (int[]); void randNoRep(int[]); int main(void){ int num; printf("Pensa un nombre de %d xifres sense repetir i entre 0 i %d.\n Entra 1 per a que l'endevini altrament s'atura.\n",XIFRES,MAXDIGIT-1); scanf("%d",&num); srand((unsigned) time (NULL)); while(num==1){ endevina(1000* pow(XIFRES,MAXDIGIT)); printf("Pensa un nombre de %d xifres sense repetir i entre 0 i %d.\n Entra 1 per a que l'endevini altrament s'atura.\n", XIFRES,MAXDIGIT-1); scanf("%d",&num); } return 0; } void endevina(int MaxIter){ int tries[MAXTRIES][XIFRES+2], nMorts, nFerits, i, j, k, mentida=0, control=0, val[XIFRES],valnou[XIFRES]; randNoRep(val); mostra(val); printf("\n"); printf("Entra quantes xifres tens ben situades:\n"); scanf("%d",&nMorts); printf("Entra quantes xifres estan mal situades:\n"); scanf("%d",&nFerits); /*Si te la llet d'adivinar-lo a la primera.*/ if(nMorts==XIFRES){ printf("He endevinat lo numero en %d intents.\n", control+1); return; } /*Posem lo numero generat en una matriu on les dues ultimes columnes s'omplin segons els ferits i morts.*/ for(i=0; i<XIFRES; i++){ tries[control]= val; } tries[control][XIFRES]=nMorts; tries[control][XIFRES+1]=nFerits; for(j=0; j<MAXTRIES; j++){ randNoRep(valnou); comptaEncerts(val, valnou, &nMorts, &nFerits); control++; for(k=0; k<control; k++){ if(tries[k][XIFRES]!=nMorts && tries[k][XIFRES+1]!=nFerits){ randNoRep(valnou); mentida++; k=-1; if(mentida>=MaxIter){ printf("Hum... Crec que menteixes.. Em dono!\n"); return; } } /*if(tries[k][XIFRES]==nMorts && tries[k][XIFRES+1]==nFerits) { mostra(valnou);*/ } } return; } void comptaEncerts (int data1[], int data2[], int *nMorts, int *nFerits){ int i,j; /*Comprovació de morts que hi ha.*/ *nMorts=0; for(i=0; i<XIFRES; i++){ if(data1==data2){ nMorts++; } } /*Comprovació de ferits que hi ha.*/ *nFerits=0; for(i=0; i<XIFRES; i++){ for(j=0; j<i; j++){ if(data1==data2[j]){ nFerits++; } } for(j=i+1; j<XIFRES; j++){ if(data1==data2[j]){ nFerits++; } } } return; } void mostra(int data[]){ int i; for(i=0; i<XIFRES; i++){ printf("%1d",data); } return; } void randNoRep(int val[XIFRES]) { int i,j; val[0]=rand()%MAXDIGIT; for(i=1; i<XIFRES; i++){ val=rand()%MAXDIGIT; for(j=0; j<i; j++){ if( val==val[j]) { val=rand()%MAXDIGIT; j = -1; /*Pq així tenim que que j valdrà 0.*/ } } } return; } Título: Re: Juego mastermind Publicado por: Tachikomaia en 26 Abril 2019, 20:05 pm No sé c++ pero fijate en prog general que estoy haciendo algo similar. Quizá nos podamos ayudar.
Si quieres vichate eso y/o decime mediante pseudocódigo qué has hecho. |