Programmation du pendu en C niveau débutant

Programmation du pendu en C niveau débutant - C - Programmation

Marsh Posté le 02-10-2007 à 09:14:40    

Bonjour !
je développe actuellement un programme en C sur le theme du pendu.

 

je rencontre toutefois un probleme!
Le programme marche impécablement,seulement voila,je ne fais pas de boucle,donc il ne se
relance pas jusqu'a ce que le programme soit fini.
J'ai bien essayé avec une boucle while,mais il m'affiche,apres avoir entré le mot a trouver,deux fois l'implémentation
"entrer la lettre que vous voulez proposer"
Pouvez vous m'éclairer??
Je précise,je débute,donc meme si la rédaction laisse a désirer,soyez indulgents^^ :wahoo:
Merci d'avance!

 

Voila le programme en question:

 


#include<stdio.h>
#include<string.h>
#include<conio.c>

 

#define MAXCAR 10
#define INITIALISATION '-'

 


int main()

 

{
    char               phrase[ MAXCAR ] ;
    char              reponse[ MAXCAR ] ;
    char                            car , car2 ;
    int    nbcar = 0 , i , m = 0, p = 0 , j = 0 , d = 0 ;
   

 

         
     
            textcolor( LIGHTBLUE );                                 /*mise en forme de l'interface*/
            printf( "%c" , 201 ) ;
           
                    for( i = 0 ; i < 78 ; i++ )
                         {                
                                          printf( "%c" , 205 ) ;                
                             }
 
            printf("%c",187);
           
            printf("%c",186);
            textcolor(YELLOW);
         
            printf("                             Pendu - projet 2007                              " );
            textcolor(LIGHTBLUE);
            printf("%c",186);
           
            printf("%c",200);
           
                             for( i = 0 ; i < 78 ; i++ )
                              {                
                             printf( "%c" , 205 ) ;                
                                     }
           
            printf("%c",188);
            textcolor(WHITE);
         
   /*saisir un mot*/
   printf("saisir le mot mysterieux:\n" );
   fgets(phrase, MAXCAR, stdin);

 


   /*initialisation du tableau de réponse*/

 

  nbcar=strlen(phrase);
     for (i=0;i<nbcar-1;i++)
     {
 reponse[i] = INITIALISATION;
 
     }

 

    for (i=0;i<nbcar-1;i++)
     {
 printf("%c",reponse[i]);
     }
 printf("\n" );
   /*creation du test terminal*/

 

    if ((m == strlen(phrase)) || (p == 12))
     {
 if (m == strlen(phrase))
 {
   printf("Gagné,vous avez trouvé le mot mystérieux\n" );
 }
        else
     {
         printf("Perdu,vous êtes pendu!!!\n" );
     }
     }
     else
     {
     
     
       printf("entrez la lettre que vous voulez proposer:\n" );
       car=getchar();
       
       
         for (j=0;j<nbcar-1;j++)
         {
            if (phrase[j]==car)
            {
               reponse[j]=car  ;  
               d++;
               m++;    
            }
           
        }
       if(d == 0)
         {
              printf("la lettre entrée ne fait pas partie du mot\n" );
              p++;  
             
          }
          for (i=0;i<nbcar-1;i++)
     {
 printf("%c",reponse[i]);
     }
   
             }  
                             

  

car2=getchar();

 

  printf("\n" );
car2=getchar();
return 0;

 

}

 


     
     
           
     
     
     
     
     
     
     


Message édité par manubestofplus le 02-10-2007 à 09:16:49
Reply

Marsh Posté le 02-10-2007 à 09:14:40   

Reply

Marsh Posté le 02-10-2007 à 11:03:06    

j'ai reussi a transformer ça en boucle,mais un probleme subsiste au niveau du compteur de 'm'
En effet,lorsque la valeur maximale est atteinte,il n'affiche pas le message de victoire,et continue de demander la saisie de lettres.
 
Programme amélioré:
 
#include<stdio.h>
#include<string.h>
#include<conio.c>
#include<conio.h>
 
#define MAXCAR 10
#define INITIALISATION '-'
 
 
int main()
 
{
    char               phrase[ MAXCAR ] ;
    char              reponse[ MAXCAR ] ;
    char                            car , car2 ;
    int    nbcar = 0 , i , m = 0, p = 0 , j = 0 , d = 0 ;
     
 
           
     
            textcolor( LIGHTBLUE );                                 /*mise en forme de l'interface*/
            printf( "%c" , 201 ) ;
             
                    for( i = 0 ; i < 78 ; i++ )
                         {                
                                          printf( "%c" , 205 ) ;                  
                             }
   
            printf("%c",187);
             
            printf("%c",186);
            textcolor(YELLOW);
         
            printf("                             Pendu - projet 2007                              " );
            textcolor(LIGHTBLUE);
            printf("%c",186);
             
            printf("%c",200);
             
                             for( i = 0 ; i < 78 ; i++ )
                              {                
                             printf( "%c" , 205 ) ;                  
                                     }
             
            printf("%c",188);
            textcolor(WHITE);
         
   /*saisir un mot*/
   printf("saisir le mot mysterieux:\n" );
   fgets(phrase, MAXCAR, stdin);
 
   /*vider l'ecran pour cacher la réponse*/
   
   clrscr();
   /*initialisation du tableau de réponse*/
 
   nbcar=strlen(phrase);
     for (i=0;i<nbcar-1;i++)
     {  
 reponse[i] = INITIALISATION;
 
     }
 
     for (i=0;i<nbcar-1;i++)
     {
 printf("%c",reponse[i]);
     }
 printf("\n" );
   /*creation du test terminal*/
 
     while ((m != nbcar) && (p != 6))
     {
      printf("\n" );
     
         printf("entrez la lettre que vous voulez proposer:?\b" );
         car=getchar();
         
         /* vider stdin */
         while (getchar() != '\n')  
         {
         }  
          d=0;
         for (j=0;j<strlen(phrase)-1;j++)
         {
            if (phrase[j]==car)
            {
               reponse[j]=car  ;  
               d++;
               m++;  
               printf("m = %d\n",m);
            }  
           
        }  
        if(d == 0)
        {
            printf("la lettre entrée ne fait pas partie du mot\n" );
            p++;    
             printf("p = %d \n",p);
        }
        for (i=0;i<strlen(phrase)-1;i++)
        {
          printf("%c",reponse[i]);
        }
     
     }  
                       
                   
                   
                                         
  if (m == nbcar)
  {
   printf("Gagné,vous avez trouvé le mot mystérieux\n" );
                   
  }
  else
  {
   printf("Perdu,vous êtes pendu!!!\n" );
  }
     
   
   
 
car2=getchar();
 
   printf("\n" );
car2=getchar();
return 0;
 
}
 
 
     
     
             
     
     
     
     
     
     
     

Reply

Marsh Posté le 02-10-2007 à 12:28:14    

Balises code STP. Il faut lire les règles du forum avant de poster...


---------------
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/
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed