Kommunauty
Connexion
Inscription

Plus ou moins


Faandemanga Messages : 35

Bonjour,

J'ai fais un petit jeu qu'on appelle PLUS OU MOINS;

Mais le problème c'est qu'après avoir reçu un nombre le programme attend et si je réappui sur entrer il se ferme.

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

int main(int argc , char *argv [])
{
    const int MAX = 100,MIN = 1;
    int nombreMystere = 0,nombreEntre = 0;

    printf("PLUS OU MOINS\n\n\n");
    printf("Essayer de trouver le nombre que j'ai en tete.\n");
    printf("Indice: Ce nombre est comprit entre  1 et 100.\n");
    printf("Entrer un nombre:\n");

    srand(time(NULL));
    nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
    scanf("%d",nombreEntre);

while(nombreEntre != nombreMystere)
{
     scanf("%d",nombreEntre);

    if(nombreEntre == nombreMystere)
    printf("Bravo vous avez trouve le nombre mystere !!! \n");

    else if(nombreEntre < nombreMystere)
    printf("C'est plus!\n");

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


}

return 0;

}

En faite j'aimerais surtout savoir pourquoi l'ordinateur ne veut pas lire le code qui se trouve dans la boucle while ???

Si quelqu'un a une idée,ce serait gentil.

mercredi 31 juillet 2013

Sezyth Messages : 47

Essaye de voir ce que contient le nombre mystère. S il est égal à zéro avant la boucle pas besoin de chercher plus loin.

mercredi 31 juillet 2013

Solimar Messages : 26

Bonjour,

J'ai parcouru rapidement ton code, cependant une partie me parait bizarre :

scanf("%d",nombreEntre);

while(nombreEntre != nombreMystere)
{
     scanf("%d",nombreEntre);

Est-il normal de relire directement l'entrée standard après la première lecture d'un mauvais chiffre ?

Normalement la structure de lecture basique est plutôt :

Première lecture

Tant que Condition pour poursuivre lecture
   Traitement
   
   Lecture
Fin Tant que
mercredi 31 juillet 2013 (Dernière édition mercredi 31 juillet 2013)

Faandemanga Messages : 35

Oui j'ai essayé un peu tous mais même en n'initialisant pas ça donne le même résultat.

Nouveau code:

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

int main(int argc , char *argv [])
{
    const int MAX = 100,MIN = 1;
    int nombreMystere ,nombreEntre = 0;

    printf("PLUS OU MOINS\n\n\n");
    printf("Essayer de trouver le nombre que j'ai en tete.\n");
    printf("Indice: Ce nombre est comprit entre  1 et 100.\n");
    printf("Entrer un nombre:\n");

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


while(nombreEntre != nombreMystere)
{
     scanf("%d",nombreEntre);

    if(nombreEntre == nombreMystere)
    printf("Bravo vous avez trouve le nombre mystere !!! \n");

    else if(nombreEntre < nombreMystere)
    printf("C'est plus!\n");

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


}

return 0;

}
mercredi 31 juillet 2013

Sezyth Messages : 47

Je ne sais pas si ça va changer quelque chose, mais il me semble que pour stocker dans une variable, la fonction scanf a besoin du symbole '&' :

scanf("%d",&nombreEntre);

Edit : En plus en regardant le code, il me semble qu'il n'affichera jamais le résultat si la réponse est bonne, car il quittera ta boucle dès lors que nombremystere = nombreentre.

Tu devrais plutôt mettre un do {} while () :

do
{
scanf("%d", &nombreEntre);
if(nombreEntre == nombreMystere)
printf("Bravo vous avez trouve le nombre mystere !!! \n");

else if(nombreEntre < nombreMystere)
printf("C'est plus!\n");

else
printf("C'est moins!\n");
} while (nombreEntre != nombreMystere);
mercredi 31 juillet 2013 (Dernière édition mercredi 31 juillet 2013)

Faandemanga Messages : 35

Ça à marcher!!

Oui c'est ça, il manquait juste un &. Merci beaucoup !!

mercredi 31 juillet 2013

Sezyth Messages : 47

Ah ben.

mercredi 31 juillet 2013

Solimar Messages : 26

En effet, l'esperluette est nécessaire pour le passage par adresse. Désolé je n'avais pas vu cette faute. Merci Sezyth

Par contre, je soutiens toujours la nécessité d'avoir la structure Première lecture => Boucle [Traitement puis lecture] => Fin Boucle. (Sauf si tu fais un do...while)

Sinon dans le cas où le bon nombre est tapé du premier coup, on va redemander de taper un nombre...

mercredi 31 juillet 2013 (Dernière édition mercredi 31 juillet 2013)

Vanyali Messages : 1298

Ah oui j'avais totalement oublié avec le C++ j'utilise plus du tout scanf

vendredi 2 aout 2013

Répondre Pour répondre, tu dois d'abord t'inscrire rapidement sur Kommunauty. Rejoins-nous vite !