[AIDE]Finition Mastermind SVP

Fermé
ribery_7_91 Messages postés 233 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 4 septembre 2010 - 20 janv. 2008 à 12:56
ribery_7_91 Messages postés 233 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 4 septembre 2010 - 20 janv. 2008 à 15:27
Bonjour a tous,

Voila j'ai fait un mastermind des plus basiques sans graphisme ni rien mais il ne marche pas dans tous les cas
Je vous met mon code :


#include <stdio.h>
#include <stdlib.h>
#define taille 4
int CduPif (int);
int init (int []);
int saisie (int []);
int mal_place (int [],int[]);
int bien_place (int [],int []);

main ()
{
int tab[taille],tab2[4], i,reussi,perdu,essai=0;
printf (" ***********************\n");
printf (" * MASTERMIND *\n");
printf (" ***********************\n\n");
printf ("Bienvenue sur le jeu de Mastermind\n");
init (tab);
for (i=0; i < taille; i++)
{
printf (" %d | ",tab[i]);
}
printf ("\t");
printf (" \nLes chiffres ont été générés aléatoirement\n\n");
printf (" Début du jeu : \n\n");
while (essai != 5)
{
saisie (tab2);
reussi = bien_place (tab,tab2);
mal_place (tab,tab2);
essai++;
for (i=0; i < taille; i++)
{
printf (" %d | ",tab2[i]);
}
if (reussi == taille)
{
essai = 5;
printf ("Félicitation vous avez gagné!!!");
}
else if ((essai == 5) && (reussi !=4))
{
printf ("\n\nVous avez perdu!!!");
}
}
}

int init(int tab[])
{

int i,n ;

randomize();
printf (" Jusqu'à quel valeur voulez vous initialiser le jeu??\t");
scanf ("%d",&n);
for(i=0; i<4; i++)
{
tab[i] = CduPif(n);
}
}

int CduPif(int n)
{
int a;
a = rand() % n ;
return a;
}

int saisie (int tab2 [])
{
int i;
int ch;
randomize ();
printf ("\n\n");
for (i=0; i < taille; i++)
{
printf ("chiffre %d : ",i+1);
scanf ("%d",&ch);
tab2[i] = ch;
}
}

int mal_place (int tab[taille] , int tab2[taille])
{
int i,a=0,m=0;
int tab3[4]
for (i = 0; i< taille; i++)
{
if (tab[i]!=tab2[i])
{
for (a = 0; a< taille; a++)
{
if(tab2[a] == tab[i])
{
m++;
}
}
}
}
printf ("\nIl y a %d chiffres mal placés\n\n",m);
return m;
}

int bien_place (int tab[taille] , int tab2[taille])
{
int i,mal=0;
for (i = 0; i< taille; i++)
{
if (tab[i]==tab2[i])
{
mal++;
}
}
printf ("\nIl y a %d chiffres bien placés\n\n",mal);
return mal;
}




Je vous explique il ne marche pas ds certains cas :
- lorsqu'il y a un double dans la solution est par exemple 3 | 6 | 7 | 3 et ke je rentre 3 | 9 | 3 | 8 il me met qu'il y a 2 mal placé alors qu'il devrait y en avoir un seul
- lorsqu'il y a un double dans la réponse qui n'est pas dans la solution par exmple 3 | 4 | 5 | 6 et ke je rentre 3 | 3 | 9 | 9 il me met qu'il y a deux mal placé alors qu'il y en a que un et un qui n'y est pas du tout



Si vous pouvez m'aider apparamment je dois mettre un tab3 dans le mal placé mais je ne sais pas quoi en faire
merci d'avance de votre aide

1 réponse

ribery_7_91 Messages postés 233 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 4 septembre 2010 16
20 janv. 2008 à 15:27
personne pour m'aider
sniff
0