begin process at 2012 05 29 16:24:03
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

Pourquoi mon code ne marche pas correctement ?


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

Pourquoi mon code ne marche pas correctement ?

vendredi 5 décembre 2008 à 18:42:46 | Pourquoi mon code ne marche pas correctement ?

magbouya

Bonjour,

Je débute dans la programmation. J'ai fait un code test (que j'aimerais améliorer après) pour le jeu PENDU mais ça ne marche pas correctement. Quand toutes les lettres du mot caché sont tapez, le jeu ne s'arrête pas. Et, quant je mets un mot secret plus long (par exemple PROGRAMME à la place de GRAMME), le code ne marche pas correctement non plus.

Est-ce que quelqu'un peut me dire où est le problème ?

Merci.

Mon code (CodeBlocks) est le suivant :

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h> //Pour la fonction touper


int main()
{
 char caractere = 0;
 char reponse;
 char motSecret[] = "GRAMME";
 char* pointeurMotTaper = NULL;

 int i = 0, j = 0, l = 0;
 int compteurLettreDuMotSecret = 0;
 int nombreDeCoups = 2;

/* Calcul du nombre de lettre de la variable motSecret */

 for(l = 0; l < strlen(motSecret); l++)
 {
     compteurLettreDuMotSecret++;
 }
 printf("Mot secret a %d octets et %d lettres\n\n", strlen(motSecret), compteurLettreDuMotSecret);

 pointeurMotTaper = malloc(compteurLettreDuMotSecret*sizeof(int));//Affectation de la mémoire

 if(pointeurMotTaper == NULL)
 {
  exit(0);
 }
 else
 {
     while(reponse != 'n')//Pour quitter le programme
     {

            do
            {
                //compteur++;
                printf("Tapez un caractere : ");
                caractere = getchar();
                caractere = toupper(caractere);
                getchar();// Pour vider le buffer (la memoire)

                if(strchr(motSecret, caractere) != NULL)
                    {
                        nombreDeCoups = nombreDeCoups;
                    }
                    else
                    {
                        nombreDeCoups -= 1;
                    }

/* Affectation du caractère tapé s'il est identique à un caractère du mot secret */

                for(i = 0; i < compteurLettreDuMotSecret; i++)
                {
                    if(caractere == motSecret[i])
                    {
                        *(pointeurMotTaper + i) = motSecret[i];
                    }
                }

/* Lecture du caractère tapé s'il est identique à un caractère du mot secret */

                for(j = 0; j < compteurLettreDuMotSecret; j++)
                {
                    if(*(pointeurMotTaper + j) == motSecret[j])
                    {
                        printf("%c", *(pointeurMotTaper + j));
                    }
                    else
                    {
                        printf("*");
                    }
                }

                printf("\nIl vous reste %d coups\n\n", nombreDeCoups);

                if((strcmp(motSecret, pointeurMotTaper)) == 0)
                {
                    printf("\tBRAVO ! le mot secret est bien %s\n\n", pointeurMotTaper);
                }

            }while((nombreDeCoups > 0) && !(strcmp(motSecret, pointeurMotTaper)) == 0);

              free(pointeurMotTaper);//Libération de la mémoire
 }

 return 0;

}

vendredi 5 décembre 2008 à 20:37:04 | Re : Pourquoi mon code ne marche pas correctement ?

BastienL21

Réponse acceptée !
Slt, je peux juste t'aider pour le mot "programme", car au début du pgm, tu dit de calculer automatiquement la longueur de la chaine avcec gramme (6 acractères), donc quand tu veux mettre un mot plus long, il n'y a pa assez de place dans le tableau ! Je te conseillerais de remplacer char motSecret[] = "GRAMME"; par : char motSecret[50] = "INIT";//Tu peux y caser un mot long de 50 lettre au maxi et pour le fait qu'il ne se stop pas, il me semble qu'il faudrait remplacer : if((strcmp(motSecret, pointeurMotTaper)) == 0) par: if( strcmp(motSecret, pointeurMotTaper) == 0) mais je n'ai pas testé et je ne suis pas sûr... mais cet une hypothèse

Cordialement, B@stien.//@++ Sondage
vendredi 5 décembre 2008 à 21:49:08 | Re : Pourquoi mon code ne marche pas correctement ?

magbouya

Effectivement, en modifiant char motSecret[] = "GRAMME"; par : char motSecret[50] = "INIT"; , j'ai résolu le problème en ce qui concerne les mots de longue taille.
Mais le remplacement de if((strcmp(motSecret, pointeurMotTaper)) == 0) par: if( strcmp(motSecret, pointeurMotTaper) == 0) ne résout encore pas le problème d'arrêt lorsque les lettres du mot secret sont bien taper.
vendredi 5 décembre 2008 à 23:21:32 | Re : Pourquoi mon code ne marche pas correctement ?

magbouya

Merci,
En mettant également la même taille aux deux tableaux (char motSecret[50]; et char motTaper[50];) mon code marche correctement.



Cette discussion est classée dans : mot, caractere, pointeurmottaper, motsecret, nombredecoups


Répondre à ce message

Sujets en rapport avec ce message

Utilisation de keybd_event [ par filoxera ] Bonjour,J'utilise Visual C++  de Visualstudio 2005 pour envoyer un mot de passe à une application,Lorsque je fait:keybd_event(0x62,0,0,0); //caractere generateur de mot [ par tezca_system ] Bonjour,Cela fait 3 jours que je travail sur un générateur de mot. C'est de niveau débutant.Concretement je souhaiterai que le programme genere tous l enum : Comment renvoyer la chaine de caractere??? [ par thmatew ] salut a tous,J'ai un petit soucis : coment faire pour retourner une chaine de caractere avec un enum?exemple:typedef enum{Lundi,Mardi,Mercredi,Jeudi,V [dev c++] mot de passe c++ [ par kiki67100 ] Bonjour jaimerais savoir comment faire une petit gestion de mot de passe en c++ voici mon codes mais meme avec un faux mot de passe sa marche /*** PRO liste chainée [ par skulls94 ] bonjour, je dois faire un  programme qui lit un fichier mot à mot et qui les stocke dans une liste chainée seulement si ils ne sont pas deja present.v Trés Grande Liste [ par amoweb ] Salut, Je voudrais créer un traducteur, donc il lie un fichier de 2mo qui contiens une ligne le mots:un mot\nsa traduction\nun mot\nsa traduction. taille Fichier avec malloc et realloc [ par halima ] Au secours!!!Slt j'aimerai creer un fichier (de mot) mais en allouant dynamiquement  la  la taille (avec malloc et realloc). un mot a au plus 100 cara lire des caractere speciaux dans un fichier [ par krusty24 ] bonjours tout le mondeje suis face a un probleme de taille.En effet je cherche a lire dans un fichier txt certain caractere comme par exemple les tabu affichage 3 premiers caractere [ par OTHKREEN ] <td id="HB_Focus_Element" valign="top" width="100%" b Fonction strstr [ par foufoudukb ] Bonjour à tous. Alors voila j'ai un poblème avec la bibliothèque String.Alors le problème porte plus précisement sur la fonction strstr pour recherche


Nos sponsors


Sondage...

Comparez les prix

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 : 0,515 sec (4)

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