Programmation du pendu en C niveau débutant - C - Programmation
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;
}
Marsh Posté le 02-10-2007 à 12:28:14
Balises code STP. Il faut lire les règles du forum avant de poster...
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^^
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