C

Résolu/Fermé
Utilisateur anonyme - 28 juil. 2011 à 10:41
14MOMO14 Messages postés 1297 Date d'inscription mercredi 30 juillet 2008 Statut Membre Dernière intervention 17 août 2011 - 28 juil. 2011 à 17:08
Bonjour, je ne trouve pas l'erreur que j'ai pour le menu. Quelqu'un peut-il m'aider?
Merci.


//Plus ou Moins

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


int main ( int argc, char** argv )
{
int nombreMystere = 0, nombreEntre = 0;
const int MAX = 100, MIN = 1;
int menu=0;
int tab[5];
int nbPartieJouer=0;
int i=0;
int resultat=0;
int nbEncode=1;

while(i<5)
{
tab[i]=0;
i++;
}

while(menu<1||menu>4)
{
printf("|-----------------------MENU-------------------------|\n");
printf("|1.Demarrer une nouvelle série |\n");
printf("|2.Afficher l'historique de la série en cours |\n");
printf("|3.Nouveau tirage dans la série en cours |\n");
printf("|4.Quitter le programme |\n");
printf("|----------------------------------------------------|\n");
printf("\n");
scanf("%d" , &menu);
printf("\n");
}

while(menu!=4||menu !=2)
{


if (menu==1);
{
while(i<5)
{
tab[i]=0;
i++;
}
nbPartieJouer=0;
}


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

srand(time(NULL));
nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
printf("%d\n",nombreMystere);
/* 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("Quel est le nombre ? ");
scanf("%d", &nombreEntre);

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

if (nombreMystere > nombreEntre)
{
printf("C'est plus !\n\n");
nbEncode++;
printf("Nombre de nombre encode:%d\n",nbEncode);
}
else if (nombreMystere < nombreEntre)
{
printf("C'est moins !\n\n");
nbEncode++;
printf("Nombre de nombre encode:%d\n",nbEncode);
}
else
{
printf ("Bravo, vous avez trouve le nombre mystere !!!\n\n");
printf("Nombre de nombre encode:%d\n",nbEncode);
}

} while (nombreEntre != nombreMystere);

nbPartieJouer++;
printf("Nombre de partie jouer: %d\n" ,nbPartieJouer);
menu=0;

while(menu<1||menu>4)
{
printf("|-----------------------MENU-------------------------|\n");
printf("|1.Demarrer une nouvelle série |\n");
printf("|2.Afficher l'historique de la série en cours |\n");
printf("|3.Nouveau tirage dans la série en cours |\n");
printf("|4.Quitter le programme |\n");
printf("|----------------------------------------------------|\n");
printf("\n");
scanf("%d" , &menu);
printf("\n");
}


}

if(menu==2)
{
while(i<5)
{
printf("%d\n",tab[i]);
i++;
}
}

if (menu==4)
printf("aurevoir");


return 0;
}



4 réponses

poukkid Messages postés 106 Date d'inscription mercredi 20 mai 2009 Statut Membre Dernière intervention 11 avril 2012 11
Modifié par poukkid le 28/07/2011 à 11:02
Salut,

Pour commencer, penses a utiliser la balise < code > autour de ton code pour la lisibilite...

while(menu!=4||menu !=2)


Attention ici : tu vas rentrer dans la boucle si menu = 2 car la première condition sera verifiée (2 != 4), et que tu as mis un "OU" entre les deux conditions de ton while.
Il en va de même pour menu = 4 puisque la deuxième condition sera verifiée (4 != 2).

Si tu ne veux pas rentrer dans cette condition avec 2 ou 4 il faut mettre && et pas || entre tes deux conditions, pour etre sur de ne laisser boucler que sur 1 et 3.

Si c'est encore autre chose, alors précises ton problème, tes cas d'erreurs..
0
Utilisateur anonyme
28 juil. 2011 à 14:31
Bonjour, Il y a toujours un problème quand on entre 2 ou 4 l'invite de commande ce ferme directement et n'affiche pas le tableau ou la phrase. Pouvez-vous m'aider?
Merci.


//Plus ou Moins

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


int main ( int argc, char** argv )
{
    int nombreMystere = 0, nombreEntre = 0;
    const int MAX = 100, MIN = 1;
    int menu=0;
    int tab[5];
    int nbPartieJouer=0;
    int i=0;
    int resultat=0;
    int nbEncode=1;
    
    while(i<5)
    {
              tab[i]=0;
              i++;
    }
    
        while(menu<1||menu>4)
    {
printf("|-----------------------MENU-------------------------|\n");
printf("|1.Demarrer une nouvelle série                       |\n");
printf("|2.Afficher l'historique de la série en cours        |\n");
printf("|3.Nouveau tirage dans la série en cours             |\n");
printf("|4.Quitter le programme                              |\n");
printf("|----------------------------------------------------|\n");
printf("\n");
scanf("%d" , &menu);
printf("\n");
}

    while(menu!=4 && menu !=2)
    {


if (menu==1);
{
              while(i<5)
    {
              tab[i]=0;
              i++;
    }
    nbPartieJouer=0;
}
    

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

    srand(time(NULL));
    nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
printf("%d\n",nombreMystere);
    /* 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("Quel est le nombre ? ");
        scanf("%d", &nombreEntre);

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

        if (nombreMystere > nombreEntre)
            {
              printf("C'est plus !\n\n");
              nbEncode++;
              printf("Nombre de nombre encode:%d\n",nbEncode);
              }  
        else if (nombreMystere < nombreEntre)
            {
              printf("C'est moins !\n\n");
              nbEncode++;
              printf("Nombre de nombre encode:%d\n",nbEncode);
            }       
        else
            {
                    printf ("Bravo, vous avez trouve le nombre mystere !!!\n\n");
                    printf("Nombre de nombre encode:%d\n",nbEncode);
            }
            
    } while (nombreEntre != nombreMystere);
    
nbPartieJouer++;
printf("Nombre de partie jouer: %d\n" ,nbPartieJouer);
menu=0;

    while(menu<1 || menu>4)
    {
printf("|-----------------------MENU-------------------------|\n");
printf("|1.Demarrer une nouvelle série                       |\n");
printf("|2.Afficher l'historique de la série en cours        |\n");
printf("|3.Nouveau tirage dans la série en cours             |\n");
printf("|4.Quitter le programme                              |\n");
printf("|----------------------------------------------------|\n");
printf("\n");
scanf("%d" , &menu);
printf("\n");
}


}

if(menu==2)
{
 i=0;
            while(i<5)
    {
              printf("%d\n",tab[i]);
              i++;
    }
}

if (menu==4)
printf("aurevoir");
    
    
    return 0;
}


                
0
poukkid Messages postés 106 Date d'inscription mercredi 20 mai 2009 Statut Membre Dernière intervention 11 avril 2012 11
Modifié par poukkid le 28/07/2011 à 15:01
si je comprend bien, tu lances ton programme .exe qui t'ouvre une nouvelle fenetre avec une invite de commande?

Tu as deux choix pour éviter que ta fenetre se ferme immédiatement sans que tu aies le temps de voir ce qui s'écrit :

Soit tu rajouter a la fin de ton code

system("pause");

pour dire au système d'attendre un signal avant de se fermer,

Soit tu lance ton application directement à partir d'une invite de commande.

Verifies déjà si tes problèmes sont résolus en ajoutant le code précisé a la fin de ton code :

if (menu==4)   
printf("aurevoir");   
       
       
    return 0;   
}   
 system("pause");
0
Utilisateur anonyme
28 juil. 2011 à 14:57
Merci beaucoup, ça fonctionne maintenant.
Merci.
0
14MOMO14 Messages postés 1297 Date d'inscription mercredi 30 juillet 2008 Statut Membre Dernière intervention 17 août 2011 105
Modifié par 14MOMO14 le 28/07/2011 à 17:10
Alors met en résolut ;-)
0