Probleme Mastermind
leylee
-
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour, je suis débutant en matière de programmation et je suis en train de programmer un jeu de mastermind. Le compilateur ne me donne aucune erreur, cependant lors de lecture le programme semble ne pas aller jusqu'au bout: Il ne prend meme pas encompte des instructions simple comme "while"...voici mon code, si vouc pouviez m'aider je vous en serais reconnaissant parceque je perd la boule.......
#include <stdio.h> #include <stdlib.h> #include <stdlib.h> #include <math.h> //Le joueur saisis la combinaison int SaisirCombi( int NC ) { int combi_joueur[8]; int ind; for (ind=1;ind<=NC;ind=ind+1) { printf("Choisir une des couleurs, en tapant le numero de la couleur"); scanf("%d",&combi_joueur[ind]); } return combi_joueur ; } //L'ordinateur tire la combinaison aléatoire int TirerCombi(int NC, int N) { int combi_ordi[8]; int ind; for(ind=1;ind<=NC;ind=ind+1) { combi_ordi[ind]= (int)((N+1-0.0001)*rand()/RAND_MAX); } return combi_ordi ; } // l'ordi Compare int ComparerCombi(int combi_ordi[],int combi_joueur[],int NC) { int Nb_bienplace; int Nb_malplace; int i; int j; Nb_bienplace=0; Nb_malplace=0; for (i=1;i<=NC;i=i+1) { if ( combi_ordi[i]=combi_joueur[i] ) { Nb_bienplace = Nb_bienplace+1; Nb_malplace=Nb_malplace+1; combi_ordi[i]=10; combi_joueur[i]=11; } } } //Programme principale int main() { int N; int NC; int combi_ordi[8]; int combi_joueur[8]; int Nb_bienplace; int Nb_malplace; int Nb_coups; int Gagne; long int u; time(&u); srand(u); printf("Choisir le nombre de couleurs compris entre 4 et 8"); scanf("%d",&N); while (N<4 && N>8) { printf("Choisir le nombre de couleurs compris entre 4 et 8"); scanf("%d",&N); } printf("Choisir le nombre de pions de la combinaison entre 3 et 6"); scanf("%d",&NC); TirerCombi(NC,N); while (NC<3 && NC>6) { printf("Choisir le nombre de couleurs compris entre 3 et 6"); scanf("%d",&NC); } Gagne=0; Nb_coups=0; while ( Gagne=0 && Nb_coups<20) { SaisirCombi(NC); Nb_coups=Nb_coups+1; ComparerCombi(combi_ordi,combi_joueur, NC); printf("Le nb de couleur bien placé est de %d/n",Nb_bienplace); printf("Le nb de couleur bien mal est de %d/n",Nb_malplace); if (Nb_bienplace=N ) { Gagne=1; printf("Vous avez gagné!"); } } if (Gagne=0) { printf("tu as perdu, essaye encore !"); } return 0; }
EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI Merci d'y penser dans tes prochains messages. |
A voir également:
- Probleme Mastermind
- Technique mastermind ✓ - Forum C
- Mastermind - Forum Java
- [Langage C] jeu mastermind - Forum C
- Mastermind! - Forum Python
- Mastermind sur labview - Forum Programmation
1 réponse
Salut,
Une compilation de ton code avec les warnings parle pas mal :
Dal
Une compilation de ton code avec les warnings parle pas mal :
$ gcc -Wall leylee.c
leylee.c: In function ‘SaisirCombi’:
leylee.c:21:2: warning: return makes integer from pointer without a cast
return combi_joueur ;
^
leylee.c:21:2: warning: function returns address of local variable [-Wreturn-local-addr]
leylee.c: In function ‘TirerCombi’:
leylee.c:36:2: warning: return makes integer from pointer without a cast
return combi_ordi
^
leylee.c:36:2: warning: function returns address of local variable [-Wreturn-local-addr]
leylee.c: In function ‘ComparerCombi’:
leylee.c:56:3: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
if ( combi_ordi[i]=combi_joueur[i] )
^
leylee.c:50:6: warning: unused variable ‘j’ [-Wunused-variable]
int j;
^
leylee.c: In function ‘main’:
leylee.c:84:2: warning: implicit declaration of function ‘time’ [-Wimplicit-function-declaration]
time(&u);
^
leylee.c:106:2: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
while ( Gagne=0 && Nb_coups<20)
^
leylee.c:113:3: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
if (Nb_bienplace=N )
^
leylee.c:119:2: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
if (Gagne=0)
^
leylee.c: In function ‘ComparerCombi’:
leylee.c:67:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
leylee.c: In function ‘main’:
leylee.c:112:3: warning: ‘Nb_malplace’ may be used uninitialized in this function [-Wmaybe-uninitialized]
printf("Le nb de couleur bien mal est de %d/n",Nb_malplace);
^
Dal
si vraiment tu ne comprends pas la raison d'un Warning ou ce qu'il signifie après avoir cherché par toi même, pose la question ici
une des erreurs très visible résulte du fait que que l'opérateur de comparaison d'égalité de nombres entiers en C est et non qui opère une affectation et que tu utilises par erreur dans tes if / while
Dal