Pseudo pendu en C
Résolu
limbergh
Messages postés
658
Date d'inscription
Statut
Membre
Dernière intervention
-
limbergh Messages postés 658 Date d'inscription Statut Membre Dernière intervention -
limbergh Messages postés 658 Date d'inscription Statut Membre Dernière intervention -
Bonsoir,
j'essaye de faire un pendu en C et je n'arrive pas à mettre un paramètre d'arret à une boucle for.
Je suis débutant pour préciser le niveau...
Voici mon code
Quand j'arrive dans la boucle for , ça boucle tout le printf et je ne vois pas comment faire(en plus ça doit-être bête!!!)
Merci d'avance pour vos interventions
j'essaye de faire un pendu en C et je n'arrive pas à mettre un paramètre d'arret à une boucle for.
Je suis débutant pour préciser le niveau...
Voici mon code
Quand j'arrive dans la boucle for , ça boucle tout le printf et je ne vois pas comment faire(en plus ça doit-être bête!!!)
Merci d'avance pour vos interventions
#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int nbessai=10; int choix, i; char mot[5]; char lc; int pendu[5]={0}; 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 =====LE PENDU======="); for (nbessai=10;nbessai>0;nbessai--) printf("\n il vous reste %d coups a jouer", nbessai); printf("\n introduisez une lettre : "); scanf("%c", &lc); for (i=0;i<=5;i++) { if (lc==mot[i]) printf("%c", lc); else printf("*"); } break; } } while(choix!=0); system("PAUSE"); return 0; }
A voir également:
- Pseudo pendu en C
- Jeu du pendu - Télécharger - Vie quotidienne
- Pseudo whatsapp - Accueil - Messagerie instantanée
- Pseudo facebook - Guide
- Sur WhatsApp, vous pourrez bientôt utiliser un nom d'utilisateur sans afficher votre numéro de téléphone - Accueil - Messagerie instantanée
- Pseudo invisible - Forum Jeux vidéo
8 réponses
Salut,
Tout d'abord, quelques petits conseils : créer des fonctions annexes, tu t'y retrouveras mieux.
Par exemple ta boucle for, tu pourrais la mettre dans une fonction affichePendu. Et tu appellerais affichePendu dans case3 ;)
Sinon je ne comprends pas ce que tu dis par : "ça boucle tout le printf" ?
Ton problème ne serait pas plutôt que ça ne retient pas en mémoire les lettres trouvées par l'utilisateur ?
Tout d'abord, quelques petits conseils : créer des fonctions annexes, tu t'y retrouveras mieux.
Par exemple ta boucle for, tu pourrais la mettre dans une fonction affichePendu. Et tu appellerais affichePendu dans case3 ;)
Sinon je ne comprends pas ce que tu dis par : "ça boucle tout le printf" ?
Ton problème ne serait pas plutôt que ça ne retient pas en mémoire les lettres trouvées par l'utilisateur ?
salut,
oui en effet ça ne retient rien en mémoire mais en plus dans la boucle for, il me marque 10 fois la ligne du dessous...
Il doit avoir une condition d'arret mais je n'arrive pas à la définir...
oui en effet ça ne retient rien en mémoire mais en plus dans la boucle for, il me marque 10 fois la ligne du dessous...
Il doit avoir une condition d'arret mais je n'arrive pas à la définir...
il faut placer des accolades et un getchar() et ça devrait marcher la
essaye ça
essaye ça
#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int nbessai=10; int choix, i; char mot[5]; char lc; int pendu[5]={0}; 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 =====LE PENDU======="); for (nbessai=10;nbessai>0;nbessai--) { printf("\n il vous reste %d coups a jouer", nbessai); printf("\n introduisez une lettre : "); scanf("%c", &lc); getchar(); for (i=0;i<=5;i++) { if (lc==mot[i]) printf("%c", lc); else printf("*"); } } break; } } while(choix!=0); system("PAUSE"); return 0; }
Bonsoir mype,
tu m'as déjà eiguiller quelque fois et içi je ne comprend pas à quoi sert le getchar();, mon code
fonctionne mais je ne sais pourquoi.
Pourrais-tu aussi me guider sur la façon dont je peux faire pour que quand j'ai tapé une lettre et qu'elle se trouve
dans le mot, il garde la lettre en mémoire...
Merci d'avance
tu m'as déjà eiguiller quelque fois et içi je ne comprend pas à quoi sert le getchar();, mon code
fonctionne mais je ne sais pourquoi.
Pourrais-tu aussi me guider sur la façon dont je peux faire pour que quand j'ai tapé une lettre et qu'elle se trouve
dans le mot, il garde la lettre en mémoire...
Merci d'avance
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
alors quand tu tapes la lettre apres avoir taper la lettre tu appuie sur entree or la touche entree correspond au caractere "\n" donc si tu ne mets pas de getchar le caractere "\n" vas etre mis dans la variable lc qui stocke des caracteres donc le getchar permet de recupere le "\n" our eviter ce petit probleme
voila j'espere que tu as compris la ;)
sinon pour ton autre probleme tu peu créé un nouveau tableau, initialiser toutes ces cases avec le symbole "*" comme ça les lettres trouvé seront stocké dans le tableau
voici ce que ça donne:
voila j'espere que tu as compris la ;)
sinon pour ton autre probleme tu peu créé un nouveau tableau, initialiser toutes ces cases avec le symbole "*" comme ça les lettres trouvé seront stocké dans le tableau
voici ce que ça donne:
#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int nbessai=10; int choix, i; char mot[5]; char lc; int pendu[5]={0}; char mot_a_trouve[6]; for(i=0;i<6;i++) mot_a_trouve[i]='*'; 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 =====LE PENDU======="); for (nbessai=10;nbessai>0;nbessai--) { printf("\n il vous reste %d coups a jouer", nbessai); printf("\n introduisez une lettre : "); scanf("%c", &lc); getchar(); for (i=0;i<=5;i++) { if (lc==mot[i]) mot_a_trouve[i]=lc; } for(i=0;i<6;i++) printf("%c",mot_a_trouve[i]); } break; } } while(choix!=0); system("PAUSE"); return 0; }
mype, getchar() n'est pas conseillé car pas du tout portable.
attention scanf("%s",mot); Il ne faut pas mettre &mot.
Voici le code modifié :
limbergh, normalement à partir de ça, tu devrais t'en sortir. Attention quand même à la lisibilité de ton code. La création de fonction n'est pas négligeable, car là limite illisible ;)
attention scanf("%s",mot); Il ne faut pas mettre &mot.
Voici le code modifié :
#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int nbessai=10; int choix; char motSecret[5]; char ls[3]; char lc; int i; char pendu[5]; 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 4 caracteres : "); strcpy(pendu,"****\0"); scanf("%s",motSecret); printf("pendu=%s\n",pendu); printf("motSecret=%s\n",motSecret); break; case 2 : printf("\n\nle mot choisi est : %s" , motSecret); break; case 3 : printf("\n =====LE PENDU======="); nbessai=10+1; while(nbessai-->0 && strcmp(motSecret,pendu)){ printf("\n il vous reste %d coups a jouer", nbessai); printf("\n introduisez une lettre : "); fgets(ls,3,stdin); lc=ls[0]; for (i=0;i<5;i++) if(motSecret[i]==lc) pendu[i]=lc; printf("%s",pendu); } break; } } while(choix!=0); system("PAUSE"); return 0; }
limbergh, normalement à partir de ça, tu devrais t'en sortir. Attention quand même à la lisibilité de ton code. La création de fonction n'est pas négligeable, car là limite illisible ;)
Je me suis mal exprimé.
Le problème du \n stocké dans le buffer dépend de l'OS. Et donc ta solution avec getchar() marchera sur les systèmes avec l'erreur mais demandera à l'utilisateur de revalider entrée une fois pour les autres systèmes.
Je pense que la solution char tmp[3] et fgets, 3= caractère + \n + \0 reste la meilleure.
Le problème du \n stocké dans le buffer dépend de l'OS. Et donc ta solution avec getchar() marchera sur les systèmes avec l'erreur mais demandera à l'utilisateur de revalider entrée une fois pour les autres systèmes.
Je pense que la solution char tmp[3] et fgets, 3= caractère + \n + \0 reste la meilleure.