Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1694 connectés 

  FORUM HardWare.fr
  Programmation
  C

  problème dans un jeu de Pendu

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

problème dans un jeu de Pendu

n°1109642
tequilla76
Posté le 06-06-2005 à 13:58:44  profilanswer
 

Mon problème viens du fait qu'il y a juste la 1ere lettre qui ne fonctionne jamais et je ne vois vraiment pas d'où ca vient.
 
Par exemple, on cherhe le mot "nico", le 'i', 'o' et 'c' sont affiché mais jamais ne 'n', il va dans la boucle de non présence d'une lettre.j'ai donc mis des affichages un peut partout, je vous laisse tester le code.
 
Pouvez vous m'aider svp?
merci
 
Voici le code (désolé si l'alignement n'est pas top car c'est mon éditeur):

Code :
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #define longueurmax 100
  4. void entreeMot(char * mot){
  5. //Acquisition du mot de départ
  6. printf("\nEntrez le mot a deviner: " );
  7. scanf("%s", mot);
  8. printf("\n" );
  9. }
  10. int longueur(char * mot){
  11. //Longueur du mot de départ
  12.     int longueurChaine=0;
  13. while(*mot){
  14.  longueurChaine++;
  15.  mot++;
  16. }
  17. printf("la longueur: %d\n",longueurChaine);
  18. return longueurChaine;
  19. }
  20. void initTab(char * mot,char motencours[longueurmax],char motadeviner[longueurmax]){
  21.  int i=0;
  22.         int longueurmot=longueur(mot);
  23.         for(i=0;i<longueurmot;i++){
  24.                                    motencours[i]='-';
  25.         }
  26.         for(i=longueurmot;i<longueurmax;i++){
  27.                                    motencours[i]=NULL;
  28.         }
  29.         for(i=0;i<longueurmot;i++){
  30.                                    motadeviner[i]=*mot;
  31.                                    mot++;
  32.         }
  33.         for(i=longueurmot;i<longueurmax;i++){
  34.                                    motadeviner[i]=NULL;
  35.         }
  36.         printf("Dans fonction initTab: %s\n",motadeviner);
  37.         printf("Dans fonction initTab: %s\n",motencours);
  38. }
  39.    
  40. int motContientLettre(char motadeviner[longueurmax],char lettre, char * mot){
  41.     int rep=0,i,longueurmot=longueur(mot);
  42.    
  43.     for(i=0;i<longueurmot;i++){
  44.                                if(motadeviner[i]==lettre)
  45.                                                          rep=1;
  46.     }
  47.     return rep;
  48. }
  49. placerlettre(char motadeviner[longueurmax],char motencours[longueurmax],char lettre,char * mot){
  50.    
  51.     int i,longueurmot=longueur(mot);
  52.    
  53.     for(i=0;i<longueurmot;i++){
  54.                                if(motadeviner[i]==lettre)
  55.                                                           motencours[i]=lettre;         
  56.     }     
  57. }
  58. main(){
  59. char *mo;
  60.     mo=malloc(30);
  61. char motencours[longueurmax];
  62. char motadeviner[longueurmax];
  63. char lettre;
  64. int nbCoups=5;
  65. printf("********************\n" );
  66. printf("****Jeu du pendu****\n" );
  67. printf("********************" );
  68. entreeMot(mo);
  69.     initTab(mo,motencours,motadeviner);
  70.    
  71.     printf("dans le main: %s\n",motadeviner);
  72.     printf("dans le main: %s\n",motencours);
  73.  
  74.      while(nbCoups!=0 && motadeviner!=motencours){
  75.                     printf("%s",motencours);
  76.                     printf("\nil vous reste %d chances\n",nbCoups);
  77.                     printf("entrer une lettre: " );
  78.                     scanf("%s",&lettre);
  79.  
  80.                     if(motContientLettre(motadeviner,lettre,mo)==1){
  81.                                                                     printf("dans le if: %s\n",motadeviner);
  82.                                                                     printf("dans le if: %s\n",motencours);
  83.                                                                     placerlettre(motadeviner,motencours,lettre,mo);                                           
  84.                     }
  85.                     else{
  86.                         printf("dans le else: %s\n",motadeviner);
  87.                         printf("dans le else: %s\n",motencours);
  88.                         printf("\nLettre non présente\n\n" );
  89.                         nbCoups--;
  90.                     }
  91.     }   
  92. }

mood
Publicité
Posté le 06-06-2005 à 13:58:44  profilanswer
 

n°1109648
tequilla76
Posté le 06-06-2005 à 14:00:59  profilanswer
 

voici un lien pour télécharger le code pour éviter le copier/coller:
 
Le code

n°1110226
tequilla76
Posté le 06-06-2005 à 19:52:53  profilanswer
 

up

n°1110233
didier1809
${citation_perso}
Posté le 06-06-2005 à 20:06:10  profilanswer
 

ce ne serais pas "betement" un -1 à faire par rapport à la longueur du mot ?


---------------
.
n°1110329
Emmanuel D​elahaye
C is a sharp tool
Posté le 06-06-2005 à 21:26:04  profilanswer
 

tequilla76 a écrit :

voici un lien pour télécharger le code pour éviter le copier/coller:
 
Le code


Je ne pas voir ça:


main.c: In function `initTab':
 
main.c:46: warning: assignment makes integer from pointer without a cast
main.c:53: warning: assignment makes integer from pointer without a cast
 
main.c: At top level:
main.c:69: warning: return type defaults to `int'
 
main.c: In function `placerlettre':
main.c:77: warning: control reaches end of non-void function
main.c: At top level:
main.c:79: warning: return type defaults to `int'
main.c: In function `main_':
main.c:115: warning: control reaches end of non-void function
 


C'est un peu trop compliqué. J'ai utilisé les fonctions standard de traitement de chaines... J'ai aussi utilisé des fonctions de saisies correctes.
 
http://mapage.noos.fr/emdel/notes.htm#saisie
http://mapage.noos.fr/emdel/notes.htm#fichiers
 
Les fonctions sont ici
 
http://mapage.noos.fr/emdel/clib.htm
Module IO
 


#include<stdio.h>
#include<stdlib.h>
#include<string.h>
 
#include"ed/inc/io.h"
 
void entreeMot (char *mot, size_t size)
{
   //Acquisition du mot de départ
   printf ("\nEntrez le mot a deviner: " );
   get_s (mot, size);
   printf ("\n" );
}
 
void initTab (char *mot, char motencours[], char motadeviner[], size_t longueurmax)
{
   size_t longueurmot = strlen (mot);
 
   memset (motencours, '-', longueurmot);
   memset (motencours + longueurmot, 0, longueurmax - longueurmot);
   strncpy (motadeviner, mot, longueurmax);
 
   printf ("Dans fonction initTab: %s\n", motadeviner);
   printf ("Dans fonction initTab: %s\n", motencours);
}
 
int motContientLettre (char motadeviner[], int lettre)
{
   return strchr (motadeviner, lettre) != NULL;
}
 
void placerlettre (char const motadeviner[], char motencours[], char lettre)
{
   char *p = strchr (motadeviner, lettre);
 
   if (p != NULL)
   {
      motencours[(size_t) (p - motadeviner)] = lettre;
   }
}
 
int main (void)
{
#define longueurmax 100
 
   char mo[30];
 
   char motencours[longueurmax];
   char motadeviner[longueurmax];
   int lettre;
   int nbCoups = 5;
   int trouve = 0;
 
   printf ("********************\n" );
   printf ("****Jeu du pendu****\n" );
   printf ("********************" );
 
   entreeMot (mo, sizeof mo);
   initTab (mo, motencours, motadeviner, longueurmax);
 
   printf ("dans le main: %s\n", motadeviner);
   printf ("dans le main: %s\n", motencours);
 
   while (nbCoups != 0 && !trouve)
   {
      printf ("'%s'\n", motencours);
      printf ("il vous reste %d chances\n", nbCoups);
      printf ("entrer une lettre: " );
      fflush (stdout);
      lettre = get_c ();
 
      if (motContientLettre (motadeviner, lettre) == 1)
      {
         placerlettre (motadeviner, motencours, lettre);
      }
      else
      {
         printf ("\nLettre non présente\n" );
         nbCoups--;
      }
      trouve = strcmp (motadeviner, motencours) == 0;
   }
 
   if (trouve)
   {
      printf ("GAGNE! : '%s'\n", motencours);
   }
   return 0;
}


Message édité par Emmanuel Delahaye le 06-06-2005 à 22:05:23

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1110524
tequilla76
Posté le 07-06-2005 à 08:04:21  profilanswer
 

merci mais je n'arrive pas a l'éxécuter car il ne trouve pas le  #include"ed/inc/io.h".

n°1110526
Emmanuel D​elahaye
C is a sharp tool
Posté le 07-06-2005 à 08:07:28  profilanswer
 

tequilla76 a écrit :

merci mais je n'arrive pas a l'éxécuter car il ne trouve pas le  #include"ed/inc/io.h".


Ca, c'est sûr. Quels sont les mots que tu ne comprends pas dans ce texte :

Citation :


Les fonctions sont ici
 
http://mapage.noos.fr/emdel/clib.htm
Module IO  


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1110551
tequilla76
Posté le 07-06-2005 à 09:04:52  profilanswer
 

ok je vais tester ca ce soir quand je serais chez moi car maintenant je suis en cours :D

n°1111580
tequilla76
Posté le 07-06-2005 à 17:43:17  profilanswer
 

je le mets où le fichier io.h?
 
Je ne peux pas prendre le io.h d'origine ?

n°1111668
Emmanuel D​elahaye
C is a sharp tool
Posté le 07-06-2005 à 18:30:12  profilanswer
 

tequilla76 a écrit :

je le mets où le fichier io.h?
 
Je ne peux pas prendre le io.h d'origine ?


Quel io.h d'origine ? Il n'y a rien de tel dans les headers standards du langage C.
 
Sur mon site, j'explique comment installer la bibliothèque... C'est pas exactement pour les débutants, mais le but est plutôt de regarder dans les fichiers et de s'inspirer de ce qu'il y a dedans pour écrire son code... Sinon, j'ai posté 3000 fois des codes simplifiés de get_s() et get_c() sur le forum.. Fouiller les archives...


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  problème dans un jeu de Pendu

 

Sujets relatifs
Problème de date et localeProbleme doublon relation
Problème de connexion à une base de donnéesprobleme d'enregistrement
probleme d upload photo avec safe_mode[SQL Server] Problème avec RAND()
Problème de CSS sous IE MACshell et awk, ya un probleme???
problème sur la copy()[PHP] Pendu probleme..
Plus de sujets relatifs à : problème dans un jeu de Pendu


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR