C

Résolu
Utilisateur anonyme -  
14MOMO14 Messages postés 1392 Statut Membre -
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

  1. poukkid Messages postés 108 Statut Membre 11
     
    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
  2. Utilisateur anonyme
     
    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
  3. poukkid Messages postés 108 Statut Membre 11
     
    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
  4. Utilisateur anonyme
     
    Merci beaucoup, ça fonctionne maintenant.
    Merci.
    0
    1. 14MOMO14 Messages postés 1392 Statut Membre 104
       
      Alors met en résolut ;-)
      0