Exercice en C

Fermé
perdue - 13 déc. 2007 à 13:18
phil232 Messages postés 607 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 31 janvier 2008 - 13 déc. 2007 à 17:09
Bonjour, j'ai fait un programme sur le jeu mastermind ,pourrait-on me corriger ou améliorer si quelque chose ne va pas ?

merci

#include <stdio.h>
#include <stdlib.h>





/* fonction qui determine si tous les chiffres saisies sont bien
compris entre 1 et 7 inclus */

int BonneSaisie(int n,int T[])

{ int i;

for (i=1;i<n+1;i++)

{if (T[i]<0 || T[i]>7)

return 0;
}

return 1;
}



/* la fonction que voulez vous faire?*/

int QueFaire ()
{
int rep;

printf("que voulez vous faire ? :\n\n");
printf(" JOUER 1\n");
printf(" REJOUER LE MEME 2\n");
printf(" DONNER LA SOLUTION 3\n");
printf(" QUITTER 4\n\n");
scanf("%d",&rep);

return rep;
}



/*la fonction nombres aléatoires aleatoirement */

void SaisieInitiale(int n,int T[])
{
int i;

for (i=1;i<n+1;i++)

{
T[i]=( (rand()%7)+1);
}

}


/* fonction afficher le tableau initiale*/


void Afficher_Saisie_Initiale(int n, int T[])
{
int i;
for (i=1;i<n+1;i++)
{
printf("%d ",T[i]);
}
printf("\n\n\n");
}


/* fonction qui demande nombre */


void SaisieJoueur(int n, int Tbis[])
{
int i;
printf("\n\n entrez vos quatres valeur separes par un espace :\n");
for (i=1;i<n+1;i++)
{
scanf("%d",&Tbis[i]);
}
if (0==BonneSaisie(n,Tbis))
{
printf(" erreur dans vos chiffres: nouvelle saisie :");

SaisieJoueur(n, Tbis);
}
}



/*passons a la fonction copie qui copie le tableau initiale
affin qu´on puisse y travailler dessus*/




//nouvelle version

void Copie (int n, int T[],int T1[])
{
int i;

for (i=1;i<n+1;i++)
{
T1[i] = T[i];
}
}


/*passons maintenant aux fonctions plus précise
qui va nous indiquer
combien de chiffres sont bien placé */


int BienPlace(int n, int T[], int T1[])
{
int i;
int bp=0;
for (i=1;i<n+1;i++)
{
if (T[i]==T1[i])
{
bp+=1;
T[i]=9; //on remplace par 9 pour ne pas le compter deux fois
T1[i]=9;
}


} //ici aussi

return bp;}



/*maintenant les mal placé*/


int MalPlace(int n,int T[],int T1[])
{
int i,j,mp=0;
for (i=1;i<n+1;i++)
{
for (j=1;j<n+1;j++)
{
if (T[i]==T1[j]/*&& i!=j */&& T[i]!=9 && T1[j]!=9)
{
mp+=1;
T[i] = 9; //on remplace ici aussi par 9
T1[j] = 9;}
}

} //ici aussi
return mp;
}

/*ecrivons une fonction qui determine si le ta bleau comporte que des 0*/

int FIN(int n, int T[])
{
int i;
for (i=1;i<n+1;i++)
{
if (T[i] == 0)
return 0;
}
return 1;
}



/*attaquons le gros du sujet mais toujour pas la fonction main*/


void mastermind()
{
int nbfoix=0; int T[5];int bpf=0;int nbfoixmax=12;
SaisieInitiale(5,T); //saisie aleatoirement les numero
AfficherSaisieInitiale(5,T); //a ne pas laisser dans la version finale

while (bpf != 5)
{
int Tbis[5];
SaisieJoueur(5,Tbis);
if (0==FIN(5,Tbis))
{
printf("vous avez decide d arreter a bientot\n");
break;}
nbfoix+=1;
// AfficherSaisieInitiale(5,Tbis);
/*int Tcop[5];
copie(5,T);*/
int Tcop[5];
/*debut de la copie manuelle*/
/* Tcop[1]=T[1];
Tcop[2]=T[2];
Tcop[3]=T[3];
Tcop[4]=T[4];
Tcop[5]=T[5];*/

// AfficherSaisieInitiale(5,Tcop);

/*fin de la copie manuelle*/
Copie(5,T,Tcop);

bpf=BienPlace(5,Tcop,Tbis);
printf("il y a %d chiffres bien places" ,bpf);
printf("\n");
printf("il y a %d chiffres mal places\n",MalPlace(5,Tcop,Tbis));
if (nbfoix==nbfoixmax) {
printf("vous avez expirer votre nombre de fois\n");
break;
}
if (bpf ==5)
{
printf("VOUS AVEZ GAGNER\n");
}

}}



/*maintenant la fonction main*/


int main()
{printf("bienvenue dans MasterMind\n\n");

int nbpr =9; // pour 8 ca met des zero



/* while (QueFaire()==1) fonction du deb
ut
{srand(nbpr);
nbpr+=1;
mastermind();
} */

/*ameliorons la fonction pour nous donner la posssibilité
de rejouer le mastermind precedent ou bien d´imprimer la solution*/
int rep; int Tres[5];
while ((rep = QueFaire())!=4)
{
srand(nbpr);
if (rep==1)
{
/*srand(nbpr);*/
nbpr+=1;
mastermind();
}
else if(rep==2)
{
srand(nbpr-1);
/*nbpr+=1;*/
mastermind();
}
else if (rep==3)
{
srand(nbpr-1);
SaisieInitiale(5,Tres);
printf("\n\n la solution etait : ");
AfficherSaisieInitiale(5,Tres);
}


}



printf("\n A TRES BIENTOT SUR MASTERMIND \n\n\n\n");

system("PAUSE");
return 0;}

1 réponse

phil232 Messages postés 607 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 31 janvier 2008 178
13 déc. 2007 à 17:09
pourquoi tu testes pas toi-même ?
0