begin process at 2012 05 28 16:55:37
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Algorithme

 > 

Maths

 > 

Besoin Aide sur mon programme


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Besoin Aide sur mon programme

dimanche 16 novembre 2008 à 21:40:35 | Besoin Aide sur mon programme

knockner

Voici mon programme je n'arrive pas a trouver mon erreurs , le programme se lance il faut appuyer 2 fois sur entrée , et des que l'on rentre une lettre le tableau n'affiche plus les etoiles , il affiche la lettre , seule la decrementation marche correctement.

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
    char motSecret[]="ABSORBTION";
    char tableauLettre[11]="**********";
    char nombresChances = 10;
    char motRentre =0;
    long i= 0;
   
    printf("****** Jeux du Pendu ******\n\n"); // INTRO
   
    while (nombresChances != 0)
    {
          printf("Le mot secret est?:%s\n", tableauLettre);
          printf("Rentrer 1 lettre \n");
         
          fgets(tableauLettre, 11, stdin);  //UTILISATEUR RENTRE UNE LETTRE
          scanf("%c", &motRentre);
         
          for (i=0; i<11; i++)    //PARCOUR LE TABLEAU
          {
              if (motSecret[i]== motRentre)    //COMPARE LE motRentre si il est dans le motSecret
              {
                                 tableauLettre[i]= motRentre;
                                 printf("%s\n", tableauLettre[i]);     //AFFICHE le tableau et la lettre à trouver
                                 printf("Plus que %ld chances de gagner\n", nombresChances);
              }
          }
          if (motSecret[i] != motRentre)
          {
                        nombresChances--;
                        printf("Plus que %ld chances de gagner\n", nombresChances);
          }
         
    }
                         
         
   
   
 
  system("PAUSE");   
  return 0;
}

lundi 17 novembre 2008 à 11:45:25 | Re : Besoin Aide sur mon programme

buno

Administrateur CodeS-SourceS
Hello,
Alors, pourquoi le mot secret ne s'affiche plus? Tout simplement parce que tu l'effaces à la ligne:
fgets(tableauLettre, 11, stdin);  //UTILISATEUR RENTRE UNE LETTRE

Ensuite, pourquoi il faut appuyer 2 fois sur ENTREE? Tout simplement parce que tu demandes 2 fois une intervention utilisateur avec les lignes suivantes:
fgets(tableauLettre, 11, stdin);  <-- tu demandes une 1ère fois une chaine saisie par l'utilisateur
scanf("%c", &motRentre); <-- tu demandes un caractère

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
lundi 17 novembre 2008 à 18:26:02 | Re : Besoin Aide sur mon programme

knockner

Merci pour ta reponse mais encore quelques questions

Si je suprimer mon scanf , mon pendu m'affiche ceci:
Le mot secret est ?: **********
Rentrer une lettre
A
<null>
Plus que 10 chance de gagner
Le mot secret est ?: A


Si je suprime mon fgets le programme plante.


je ne voit pas d'ou sort le <null>

Pouvais m'aider et me dire comment faire que si la lettre corespond on affiche la lettre puis les autres en * et que la ne fasse pas comme dans mon programme que des que l'on rentre une lettre le tableau affiche la lettre.

lundi 17 novembre 2008 à 18:26:49 | Re : Besoin Aide sur mon programme

knockner

C'est un  jeu du pendu , j'ai oublier de preciser.
Cordialment.

lundi 17 novembre 2008 à 19:50:36 | Re : Besoin Aide sur mon programme

buno

Administrateur CodeS-SourceS
Hello,
Voici comment j'ai modifié ton code pour le faire fonctionner (cf.remarques en dessous):

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char *argv[])
{
    char motSecret[]="absorption";   <-- minuscules (1)
    char tableauLettre[11]="**********";
    char nombresChancesTotal = 10;
    char nombresChances = nombresChancesTotal;
    char motRentre =0;
    long i= 0;
  
    printf("****** Jeux du Pendu ******\n\n"); // INTRO
  
    while (nombresChances != 0)
    {
          printf("Le mot secret est?:%s\n", tableauLettre);
          printf("Rentrer 1 lettre \n");
        
          scanf("%c", &motRentre);   <-- Saisie du caractère
        
          for (i=0; i<11; i++)    //PARCOUR LE TABLEAU
          {
              if (motSecret[i]== motRentre)    //COMPARE LE motRentre si il est dans le motSecret
              {
                 tableauLettre[i]= motRentre;  <-- Suppression des printf "pollueurs"
              }
          }
          if (strcmp(motSecret,tableauLettre))   <-- Comparaison de chaines  (2)
          {
            nombresChances--;
            printf("Plus que %ld chances de gagner\n", nombresChances);
            fflush(stdin);    <-- Pour nettoyer le buffer de saisie
          }
          else
          {
              printf("Bravo, vous avez trouve en %d coups\n",nombresChancesTotal-nombresChances);
              break;
          }   
    }
 
  system("PAUSE");  
  return 0;
}

Remarques:
(1): minuscules pour simplifier la comparaison des caractères (sinon, faut tester majuscule ET minuscule)
(2): en C, la comparaison de chaines de caractères ne se fait pas avec "=="

N'hésites pas si tu as des questions sur le code

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
lundi 17 novembre 2008 à 21:26:13 | Re : Besoin Aide sur mon programme

knockner

Merci beaucoup Buno effectivement maintenant le programme fonctionne.

Maintenant j'aimerais mettre si possible un mot au hazard , faire une randomisation , que le mot ne soit pas toujours absorbtion.

je sais qu'il faut mettre:
#include <time.h>

srand(time(NULL));    
motSecret  = rand()


Mais apres je ne voit pas trop comment faire pour que le nom soit un nom valide pas exemple que cela ne donne pas par exemple : "azeididid" mais un mot qui a un sens comme "chemise" par exemple.

lundi 17 novembre 2008 à 21:44:43 | Re : Besoin Aide sur mon programme

buno

Administrateur CodeS-SourceS
Oulah...c'est un peu compliqué ça: générer aléatoirement un mot valide...
Ce que tu peux faire pour biaiser le truc est la chose suivante:
- un fichier avec une liste de mots
- une génération aléatoire d'index qui te permettra d'aller chercher le i-ème mot de cette liste

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...


Cette discussion est classée dans : printf, char, lettre, motrentre, tableaulettre


Répondre à ce message

Sujets en rapport avec ce message

Je cherche l'erreur [ par ScorpionTiti ] J'ai effectué un programme qui me permette d'écrire dans un fichier et je l'ai compilé. En le lançant, il m'envoie un message d'erreur mais je ne sais Gestion des espaces en C [ par maximax ] Bonjour à tous...je suis nouveau ici et j'ai un pb avec un petit programme tout bête en C...En gros, je veux que l'utilisateur entre les informations Ayez pitié de moi !!! HELP PLEASE ! [ par maximax ] Bonjour à tous...je suis nouveau ici et j'ai un pb avec un petit programme tout bête en C...En gros, je veux que l'utilisateur entre les informations HELLP ME FOR MY PTI [ par dj_ricom ] Je suis actuellement en première année BTS IG et je souhaite réaliser un PTI sur la gestion d'une école notament en ce qui concerne les notes des elev probleme de comparaison de membre de structure par rapport a une donnée de fichier [ par Yossi ] bonjour struct adherents{ int numadherent; char nom[25]; char prenom[30]; char adresse[80]; char cp[5]; char ville[40]; };j'ai un probleme (surement u CRYPTAGE !!! [ par megaman ] Voilà j'essai de faire un log de cryptage à l'aide de fonctions et procédure.Les fonctions et procédures :Une fonction qui retourne le nom de fichieru Pointeurs et tableau de pointeurs [ par dragon3x6 ] Salut à la communauté des developpeurs C,j'essai d'écrire un bout de code qui enregistre une liste de mots dans une structure de type arbre.Lorsqu'un probleme lors de la saisie de données pour mon répertoir [ par doggy59115 ] Bonjour a tous, j'ai un petit probleme avec mon programme en C. Lors de l'affichage des données saisies, le nom et le numero de telephone ne forment q aide sur erreur de syntaxe [ par skadomers ] salut à tous.voila je suis en train de créer un programme , permettant de faire des fiches de commande par client. Dans un premier temps ont rempli le moteur de recherche pour des fichiers contenu dans un serveur ftp [ par cobra176 ] j'ai créer un programme de recherche grace a l'aide plusieurs menbres  de ce site mais à la fin quand je le compile mon assembleur me dit Build error


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,030 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales