[AIDE]Finition Mastermind SVP
ribery_7_91
Messages postés
240
Statut
Membre
-
ribery_7_91 Messages postés 240 Statut Membre -
ribery_7_91 Messages postés 240 Statut Membre -
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
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
A voir également:
- [AIDE]Finition Mastermind SVP
- Tondeuse finition - Guide
- Technique mastermind ✓ - Forum C
- Mastermind - Forum Java
- Mastermind technique - Forum C