Aidez svp [Résolu]

Messages postés
2
Date d'inscription
mercredi 26 mars 2008
Dernière intervention
19 avril 2008
- 19 avril 2008 à 12:43 - Dernière réponse :
Messages postés
2
Date d'inscription
mercredi 26 mars 2008
Dernière intervention
19 avril 2008
- 19 avril 2008 à 23:25
jesuis un debutant en c++ et je doit fair un projet de motus et j ai fait ce travail mais il y a un probleme que j ai pas arrivé a le comprendre voila mon travail :
#include<stdio.h>
#include<conio.h>
#include<time.h>
#include<stdlib.h>
#include<string.h>
void enplace(char mot[22][8],int nb,char ch[8],char ch2[8])
{int i,j;
j= 0;
for (i=0;i<=7;i++)
{if(ch[i]== mot[nb][j])
ch2[j]= ch[i];

else
ch2[j]='*';
j++;}

printf(" les lettres qui sont en places sont  ");
puts (ch2);
}
void nenplace (char mot[22][8],int nb,char ch[8],char ch2[8])
{int i,j;char ch4[8];char ch3[8];
for (i=0;i<=7;i++)
 {for (j=0;j<=7;j++)
  if(ch[i]== mot[nb][j] && ch[i]!=ch2[j] && ch[i]!=ch3[j])// le probleme est ici
   {ch3[j] =mot[nb][j];
    ch4[i]= ch[i];}
  else
   ch4[i]='*';} //
printf("Les lettres qui ne sont pas à leurs places sont ");
puts(ch4);
}

main()
{char mot[22][8];char ch[8];int sr =0;char ch2[8];
srand(time(0));
void enplace(char mot[22][8],int nb,char ch[8],char ch2[8]);
void nenplace(char mot[22][8],int nb,char ch[8],char ch2[8]);
int i=0,nb;
strcpy (mot[0],"intence");
strcpy (mot[1],"taxable");
strcpy (mot[2],"accueil");
strcpy (mot[3],"acheter");
strcpy (mot[4],"acompte");
strcpy (mot[5],"activer");
strcpy (mot[6],"agjuger");
strcpy (mot[7],"adresse");
strcpy (mot[8],"affaire");
strcpy (mot[9],"aimable");
strcpy (mot[10],"ajuster");
strcpy (mot[11],"alliage");
strcpy (mot[12],"amazone");
strcpy (mot[13],"analyse");
strcpy (mot[14],"animale");
strcpy (mot[15],"armures");
strcpy (mot[16],"barrage");
strcpy (mot[17],"binaire");
strcpy (mot[18],"boitier");
strcpy (mot[19],"bonheur");
strcpy (mot[20],"boucler");
strcpy (mot[21],"bowling");
strcpy (mot[22],"calibre");
nb= int(rand()%21)+1;
puts(mot[nb]);
printf("\t bien venu dans votre jeu motus \n");
printf("entrer un mot qui commence par: \n");
printf("%c \n",mot[nb][0]);
do{
gets(ch);
if(strcmp(mot[nb],ch)==0)
{printf("vous avez trouve le bon mot felicitation");
sr =1;}
else
{enplace(mot,nb,ch,ch2);
nenplace(mot,nb,ch,ch2);}
i++;
}while(sr==0 && i>7);
getch();}
et merci d'avance
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
Messages postés
482
Date d'inscription
vendredi 26 août 2005
Dernière intervention
5 décembre 2009
- 19 avril 2008 à 15:38
3
Merci
Bonjour,

Voilà une solution qui marche pas mal, a priori, et un peu mieux structurée !

#include <stdio.h>
#include <conio.h>
#include <time.h>
#include <stdlib.h>
#include <string.h>




// --- Longueur et taille d'un mot
static const int iLongueurMot = 7;
static const int iTailleMot   = iLongueurMot + 1;




// --- Prototypes des fonctions
void LettresBonnePlace(const char*,const char*);
void LettresMauvaisePlace(const char*,const char*);






// ------------------------
// Lettres à la bonne place
// ------------------------
void LettresBonnePlace
(
    const char* solution // E:mot à trouver
   ,const char* reponse  // E:reponse proposée
)
{
   char motif[iTailleMot];
   int  i;



   for (i=0 ; i






// ---------------------------
// Lettres à la mauvaise place
// ---------------------------
void LettresMauvaisePlace
(
    const char* solution // E:mot à trouver
   ,const char* reponse  // E:reponse proposée
)
{
   char motif[iTailleMot];
   int  i,j;




   // --- Copie de la solution sans les lettres bien placées
   char solution2[iTailleMot];
   for (i=0 ; i



   for (i=0 ; i






// -------------------
// Fonction principale
// -------------------
int main(void)
{
   const int iNombreMot = 23;
   char mot[iNombreMot][iTailleMot] =
   {
       "intense" // à la place de "intence"
      ,"taxable"
      ,"accueil"
      ,"acheter"
      ,"acompte"
      ,"activer"
      ,"adjuger" // à la place de "agjuger"
      ,"adresse"
      ,"affaire"
      ,"aimable"
      ,"ajuster"
      ,"alliage"
      ,"amazone"
      ,"analyse"
      ,"animale"
      ,"armures"
      ,"barrage"
      ,"binaire"
      ,"boîtier" // à la place de "boitier"
      ,"bonheur"
      ,"boucler"
      ,"bowling"
      ,"calibre"
   };



   char reponse[iTailleMot];
   int  nb_reponse = 0;
   int  indice_mot;




   // --- Tirer au sort le mot à trouver
   srand(time(0));
   indice_mot = int(rand() % iNombreMot);
   printf("(mot a trouver : %s)\n\n",mot[indice_mot]);




   // --- Jeu
   printf("Bienvenu dans votre jeu MOTUS\n");
   printf("Entrer un mot de %d lettres qui commence par : %c \n"
         ,iLongueurMot,mot[indice_mot][0]);
   while (true)
   {
      while (true)
      {
         printf("\nReponse proposee %d/%d ...... : ",nb_reponse + 1,iLongueurMot);
         gets(reponse);
         if (strlen(reponse) == iLongueurMot) break;
         printf("!!! Mot de %d lettres SVP, recommencer\n",iLongueurMot);
      }
      if (stricmp(mot[indice_mot],reponse) == 0)
      {
         printf("\n*** FELICITATION, vous avez trouve le bon mot ***\n");
         break;
      }
      LettresBonnePlace(mot[indice_mot],reponse);
      LettresMauvaisePlace(mot[indice_mot],reponse);



      ++nb_reponse;
      if (nb_reponse == iLongueurMot)
      {
         printf("\n!!! Vous avez atteint le nombre de reponses autorisees\n");
         break;
      }
   }




   // --- Quitter
   printf("\nAppuyer sur une touche ");
   getch();
   printf("\n");
   return EXIT_SUCCESS;
}


ce qui donne :

(mot a trouver : amazone)



Bienvenu dans votre jeu MOTUS
Entrer un mot de 7 lettres qui commence par : a



Reponse proposee 1/7 ...... : anatol
!!! Mot de 7 lettres SVP, recommencer



Reponse proposee 1/7 ...... : anatole
Lettres a la bonne place .. : a*a*o*e
Lettres a la mauvaise place : *n*****



Reponse proposee 2/7 ...... : anatone
Lettres a la bonne place .. : a*a*one
Lettres a la mauvaise place : *******



Reponse proposee 3/7 ...... : azamone
Lettres a la bonne place .. : a*a*one
Lettres a la mauvaise place : *z*m***



Reponse proposee 4/7 ...... : amazone



*** FELICITATION, vous avez trouve le bon mot ***



Appuyer sur une touche




Jean-François

Merci cs_jfrancois 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de cs_jfrancois
Messages postés
2
Date d'inscription
mercredi 26 mars 2008
Dernière intervention
19 avril 2008
- 19 avril 2008 à 23:25
0
Merci
merci beaucoup monsieur Jean-François pour cette solution  
C’est très gentil de votre part
Commenter la réponse de bbmmouha

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.