Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 29/12/2009, à 14:05

polov

[RESOLU] Problème dans mon code

Bonjour à tous,

Sur le net, j'ai récupéré le code source d'un TD d'informatique où le but et de rajouter un compteur au code. J'ai réussi sauf que lorsque je demande à l'ordinateur d'afficher le nombre de coups, pour le premier essai il affiche "1 coups". J'ai  donc corriger ma faute en réécrivant le code. Le voici:

#include <stdio.h>

#include <stdlib.h>

#include <time.h>





int main ( int argc, char** argv )

{

    int nombreMystere = 0, nombreEntre = 0, compteur = 1;

    const int MAX = 100, MIN = 1;



    // Génération du nombre aléatoire



    srand(time(NULL));

    nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;



    /* La boucle du programme. Elle se répète tant que l'utilisateur

    n'a pas trouvé le nombre mystère */



    do

    {

        // On demande le nombre

        printf("Choisissez un nombre entre 1 et 100\n");
        printf("Quel est le nombre ? ");

        scanf("%d", &nombreEntre);
        {
        if (compteur = 1)
           printf("%d coup\n", compteur = 1);
           compteur++;  
        else (compteur >= 2)
         printf("%d coups\n", compteur);
        compteur++;

        }

        // On compare le nombre entré avec le nombre mystère



        if (nombreMystere > nombreEntre)

            printf("C'est plus !\n\n");

        else if (nombreMystere < nombreEntre)

            printf("C'est moins !\n\n");

        else

            printf ("Bravo, vous avez trouve le nombre mystere !!!\n\n");

    } while (nombreEntre != nombreMystere);



}

Voila à la ligne "if (compteur......)..." mon code est faux sad. Voici ce que gcc me renvoit
:

main.c: In function ‘main’:
main.c:40: erreur: ‘else’ without a previous ‘if’
main.c:41: erreur: expected ‘;’ before ‘printf’

Si vous avez la réponse merci de me la communiquer.

Dernière modification par polov (Le 29/12/2009, à 14:53)


"Je suis ce que je suis grâce à ce que nous sommes tous" Ubuntu

Hors ligne

#2 Le 29/12/2009, à 14:08

slasher-fun

Re : [RESOLU] Problème dans mon code

Bonjour,

if (compteur = 1)
           printf("%d coup\n", compteur = 1);
           compteur++;

Deux erreurs ici :
* compteur = 1 va attribuer 1 à la valeur compteur. Non seulement le test sera toujours vrai, mais en plus il changera la valeur de ton compteur
* Pas d'accolades après ton if, donc seule la ligne suivante est prise en compte dans l'exécution conditionnelle. Une ligne se trouve alors avant le else, qui ne dépend plus du if précédent.

Hors ligne

#3 Le 29/12/2009, à 14:12

polov

Re : [RESOLU] Problème dans mon code

Ok. Merci beaucoup.
Etant débutant même grand débutant que dois-je changer car je ne comprend pas tout ce que tu as dit hmm


"Je suis ce que je suis grâce à ce que nous sommes tous" Ubuntu

Hors ligne

#4 Le 29/12/2009, à 14:37

polov

Re : [RESOLU] Problème dans mon code

J'ai réécris mon code du moins je l'ai un peu changé et j'ai toujours une erreur. Le voici:

#include <stdio.h>

#include <stdlib.h>

#include <time.h>




int main ( int argc, char** argv )

{

    int nombreMystere = 0, nombreEntre = 0, compteur = 1 ;

    const int MAX = 100, MIN = 1;



    // Génération du nombre aléatoire



    srand(time(NULL));

    nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;



    /* La boucle du programme. Elle se répète tant que l'utilisateur

    n'a pas trouvé le nombre mystère */

    printf("Choisissez un nombre entre 1 et 100\n");

    do

    {

        // On demande le nombre

        printf("Quel est le nombre ? ");

        scanf("%d", &nombreEntre);

        {
         if (compteur == 1)
           {
           printf("%d coup\n", compteur);
           compteur++;
           }
        else (compteur >= 2)
           {
           printf("%d coups\n", compteur);
           compteur++;
           }

         }  

        // On compare le nombre entré avec le nombre mystère



        if (nombreMystere > nombreEntre)

            printf("C'est plus !\n\n");

        else if (nombreMystere < nombreEntre)

            printf("C'est moins !\n\n");

        else

            printf ("Bravo, vous avez trouve le nombre mystere !!!\n\n");

    } while (nombreEntre != nombreMystere);



}

Voici le message d'erreur de GCC:

In function ‘main’:
main.c:42: erreur: expected ‘;’ before ‘{’ token

La ligne 42 est celle de la condition "Else".

Dernière modification par polov (Le 29/12/2009, à 14:40)


"Je suis ce que je suis grâce à ce que nous sommes tous" Ubuntu

Hors ligne

#5 Le 29/12/2009, à 14:48

slasher-fun

Re : [RESOLU] Problème dans mon code

else ne prend pas de condition. Si tu veux en mettre une, c'est un "else if".

Hors ligne

#6 Le 29/12/2009, à 14:51

Teofifil

Re : [RESOLU] Problème dans mon code

Bonjour
A la place de :

else (compteur >= 2)

essaie

else if(compteur >= 2){}
ou
else 
{
   if(compteur >= 2){} 
   else {}
}

Il manquait juste le if. (Je ne me rappelle plus très bien pour le elsif).

Hors ligne

#7 Le 29/12/2009, à 14:52

polov

Re : [RESOLU] Problème dans mon code

Merci mille fois smile
J'ai enfin résolu le problème qui devait, certe être simple pour vous, mais dur pour moi.


"Je suis ce que je suis grâce à ce que nous sommes tous" Ubuntu

Hors ligne