Pendu en C
Résolu
limbergh
Messages postés
669
Statut
Membre
-
oupsman Messages postés 319 Statut Membre -
oupsman Messages postés 319 Statut Membre -
Bonjour,
c'est juste une esquisse du pendu en c, après je l'amélorerai mais j'ai un problème dans mon code.
Quand je tape un mot, et que ensuite je choisi une lettre pour trouver le mot, le code
m'indique que ma lettre se trouve à toute les positions sauf la 0 et je ne comprnend pas
pourquoi. Soyez indulgent, je débute en C...
Merci d'avance pour vos interventions.
Benoît
c'est juste une esquisse du pendu en c, après je l'amélorerai mais j'ai un problème dans mon code.
Quand je tape un mot, et que ensuite je choisi une lettre pour trouver le mot, le code
m'indique que ma lettre se trouve à toute les positions sauf la 0 et je ne comprnend pas
pourquoi. Soyez indulgent, je débute en C...
Merci d'avance pour vos interventions.
Benoît
#include <stdio.h>
#include <stdlib.h>
int main()
{
char mot [5];
char lettre;
int i;
scanf("%s", mot);
printf("tapez une lettre : ");
scanf("%s",&lettre);
for (i=0;i<=5;i++)
{
if(lettre=mot[i])
printf("la lettre est a la position %d\n" ,i);
else
printf("pas bon\n");
}
system("PAUSE");
return 0;
}
A voir également:
- Pendu en C
- Jeu du pendu - Télécharger - Vie quotidienne
- Télécharger jeu du pendu gratuit - Télécharger - Jeux vidéo
17 réponses
for (i=0;i<=5;i++)
{
jconnai pas tres bien le C sa fait lontemp que j'en ai pas fait mais si tu met i++ sa veut dire qu'il increment i de +1 a chaque fois nan?
if(lettre=mot[i])
printf("la lettre est a la position %d\n" ,i); et la vu que ta variable c'est i en fait il prend chaque valeurs de i donc 1 2 3 4 donc il te met ta lettre partout kes ten dit??
en fait tu lui dit pour i compris entre 0 et 5 tu met la lettre sa tourne pas rond ton truc jcroi
{
jconnai pas tres bien le C sa fait lontemp que j'en ai pas fait mais si tu met i++ sa veut dire qu'il increment i de +1 a chaque fois nan?
if(lettre=mot[i])
printf("la lettre est a la position %d\n" ,i); et la vu que ta variable c'est i en fait il prend chaque valeurs de i donc 1 2 3 4 donc il te met ta lettre partout kes ten dit??
en fait tu lui dit pour i compris entre 0 et 5 tu met la lettre sa tourne pas rond ton truc jcroi
non,
au début du code j'introduis un mot de six lettres, ensuite je chiosi une lettre
et la compare avec le mot tapé.
C'est la que ça m'indique que la lettre se trouve partout dans le mot
sauf en position 0...
Et je ne comprend toujours pas pourquoi!!!
au début du code j'introduis un mot de six lettres, ensuite je chiosi une lettre
et la compare avec le mot tapé.
C'est la que ça m'indique que la lettre se trouve partout dans le mot
sauf en position 0...
Et je ne comprend toujours pas pourquoi!!!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
#define Tmax5
c'est défini pour 6 caractères vu qu'il y a le 0 qui compte non?
Donc tu n'as pas d'explications pourquoi ça plante?
c'est défini pour 6 caractères vu qu'il y a le 0 qui compte non?
Donc tu n'as pas d'explications pourquoi ça plante?
Salut limbergh,
Dans ta boucle for, dans if il faut mettre "==" et non "=".
== signifie un test.
= signifie affectation.
donc si tu corriges ton code, ça doit marcher.
CORRECTION :
....
...
for (i=0;i<=5;i++)
{
if(lettre==mot[i])
printf("la lettre est a la position %d\n" ,i);
else
printf("pas bon\n");
}
...
...
a+ ;-)
Dans ta boucle for, dans if il faut mettre "==" et non "=".
== signifie un test.
= signifie affectation.
donc si tu corriges ton code, ça doit marcher.
CORRECTION :
....
...
for (i=0;i<=5;i++)
{
if(lettre==mot[i])
printf("la lettre est a la position %d\n" ,i);
else
printf("pas bon\n");
}
...
...
a+ ;-)
Salut oupsman,
effectivement ça fonctionne mieux mais ce que je ne comprend pas c'est pourquoi
la première lettre du mot tapé n'est jamais reconnue par la lettre introduite...
Si tu as une explication à ça je suis preneur...
Merci d'avance
effectivement ça fonctionne mieux mais ce que je ne comprend pas c'est pourquoi
la première lettre du mot tapé n'est jamais reconnue par la lettre introduite...
Si tu as une explication à ça je suis preneur...
Merci d'avance
Voilà, je pense que mon code est plus lisible...
En fait quand j'introduis une lettre pour deviner le mot introduis avant, pex, le mot est "loulou", quand je vais sur la case 3
et que j'introduis un "l" il m'indique en position 0, 1, 2, pas bon, 3 bonne piosition et en 4 et 5 pas bon.
Pourquoi ça ne fonctionne pas pour la posiiton 0??????
Merci d'avance
Limbergh
En fait quand j'introduis une lettre pour deviner le mot introduis avant, pex, le mot est "loulou", quand je vais sur la case 3
et que j'introduis un "l" il m'indique en position 0, 1, 2, pas bon, 3 bonne piosition et en 4 et 5 pas bon.
Pourquoi ça ne fonctionne pas pour la posiiton 0??????
Merci d'avance
Limbergh
j'avais oublié le code....
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int choix, i;
char mot[5];
char lc;
do
{
printf("\n\n-1- choisissez un mot!!! : ");
printf("\n-2- affichez le mot choisi!!! : ");
printf("\n-3- tapez une lettre : ");
printf("\n votre choix==============>");
scanf("%d", &choix);
switch(choix)
{
case 1 :
printf("introduisez un mot de 6 caracteres : ");
scanf("%s", &mot);
break;
case 2 :
printf("\n\nle mot choisi est : %s" , mot);
break;
case 3 :
printf("\n introduisez une lettre : ");
scanf("%s", &lc);
for (i=0;i<=5;i++)
{
if (lc==mot[i])
printf("\n la lettre est a la position %d : ", i);
else
printf("\n pas bon");
}
break;
}
}while(choix!=0);
system("PAUSE");
return 0;
}
essayes avec ça :
int main(void)
{
char mot[5];
char lettre;
int i;
scanf("%s", mot);
printf("tapez une lettre : ");
scanf(" %c",&lettre); /*ICI J'AI RAJOUTE UN ESPACE AVANT %c*/
/*et li tiens était aussi un %s que j'ai remplacé*/
for (i=0;i<5;i++)
{
if(lettre==mot[i])
printf("la lettre est a la position %d\n" ,i);
else
printf("pas bon\n");
}
system("PAUSE");
return 0;
}
normalement ça doit faire ce que tu voulais a + ;-)
int main(void)
{
char mot[5];
char lettre;
int i;
scanf("%s", mot);
printf("tapez une lettre : ");
scanf(" %c",&lettre); /*ICI J'AI RAJOUTE UN ESPACE AVANT %c*/
/*et li tiens était aussi un %s que j'ai remplacé*/
for (i=0;i<5;i++)
{
if(lettre==mot[i])
printf("la lettre est a la position %d\n" ,i);
else
printf("pas bon\n");
}
system("PAUSE");
return 0;
}
normalement ça doit faire ce que tu voulais a + ;-)
Salut mype,
j'ai fait ce quu tu m'as suggéré et mon problème persiste... De plus, je ne comprend pas
pourquoi il faut rajouter getchar();...
j'ai fait ce quu tu m'as suggéré et mon problème persiste... De plus, je ne comprend pas
pourquoi il faut rajouter getchar();...
la letre est un seul caractere donc tu remplace %s par %c là scanf("%c", &lc);
rajoute un autre getchar(); apres scanf("%c", &lc);
quand tu tape ton choix ou ta lettre apres tu appuies sur entree donc il te faut un getchar pour recupere le caractere \n qui correspond a la touche entree
essaye ça la ça devrait marché
rajoute un autre getchar(); apres scanf("%c", &lc);
quand tu tape ton choix ou ta lettre apres tu appuies sur entree donc il te faut un getchar pour recupere le caractere \n qui correspond a la touche entree
essaye ça la ça devrait marché
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int choix, i;
char mot[5];
char lc;
do
{
printf("\n\n-1- choisissez un mot!!! : ");
printf("\n-2- affichez le mot choisi!!! : ");
printf("\n-3- tapez une lettre : ");
printf("\n votre choix==============>");
scanf("%d", &choix);
getchar();
switch(choix)
{
case 1 :
printf("introduisez un mot de 6 caracteres : ");
scanf("%s", &mot);
break;
case 2 :
printf("\n\nle mot choisi est : %s" , mot);
break;
case 3 :
printf("\n introduisez une lettre : ");
scanf("%c", &lc);
getchar();
for (i=0;i<=5;i++)
{
if (lc==mot[i])
printf("\n la lettre est a la position %d : ", i);
else
printf("\n pas bon");
}
break;
}
}while(choix!=0);
system("PAUSE");
return 0;
}