Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème apparu au hasard

En rapport au TP partie I

    26 février 2006 à 16:49:37

    Voila ayant fini le tp de Mateo, je commençais à essayer différents ajouts à ce programme tel le menu pour les niveaux et quel fut ma surprise quand je voulu essayer le défaut de mon switch je taper *$ et alors un texte commença à défiler sans cesse Le nombre est plus grand ! Quel est le nombre mystere ?
    Je vous met mon code dessous si quelqu'un peut m'expliquer ce bug.

    /*
    TP Plus ou Moins
    |-----------------------------------------------------------------|
    |Réalisé par Pierre lors de son apprentissage sur le site du zero |
    |Création le 26/02/06 à 16h16                                     |
    |-----------------------------------------------------------------|
    Tout droit lui sont réservé
    */


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

    int main(int argc, char *argv[])
    {
     //Déclarations des variables
       
     long donnee_rentre = 0, nombreMystere = 0, choixMenu = 0, nombreMaximum, nombreMinimum;
       
       
     //Fin des déclarations de variables
         
      //Début du menu
     
      printf("=== Menu ===\n\n");
      printf("1. De 0 a 10\n");
      printf("2. De 0 a 100\n");
      printf("3. De 0 a 1000\n");
      printf("4. De 0 a 10000\n");
      printf("\nVotre choix ? 1, 2, 3 ou 4 : ");
      scanf("%ld", &choixMenu);
     
      printf("\n");
     
      switch (choixMenu)
      {
        case 1:
           nombreMaximum = 10, nombreMinimum = 0;
           break;
        case 2:
           nombreMaximum = 100, nombreMinimum = 0;
           break;
        case 3:
           nombreMaximum = 1000, nombreMinimum = 0;
           break;
        case 4:
           nombreMaximum = 10000, nombreMinimum = 0;
           break;
        default:
           printf("Vous n'avez pas rentre un nombre correct. Vous jouerez donc entre 0 et 10\n\n\n");
           nombreMaximum = 10, nombreMinimum = 0;
           break;
      }
      //Fin du menu   
       
        //Debut du choix au hasard par l'ordinateur
       
        srand(time(NULL));
        nombreMystere = (rand() % (nombreMaximum - nombreMinimum + 1)) + nombreMinimum;
       
        //Fin du choix au hasard par l'ordinateur
       
       
        do
        {
            printf("Quel est le nombre ? ");
            scanf("%ld", &donnee_rentre);
            if(donnee_rentre > nombreMystere && donnee_rentre <= nombreMaximum)
            {
            printf("\nLe nombre mystere est plus petit\n\n");
            }
            if(donnee_rentre<nombreMystere )                               
            {
            printf("\nLe nombre mystere est plus grand\n\n");
            }
            if(donnee_rentre==nombreMystere)
            { 
            printf("\n*******BRAVO*********\n"); //Des sauts de lignes dès le début pour une meilleur lisibilité
            printf("*******BRAVO*********\n");
            printf("*******BRAVO*********\n");
            printf("*******BRAVO*********\n\n");
            } 
            if(donnee_rentre > nombreMaximum)
            {
            printf("\nLe chiffre mystere ce situe entre 0 et %ld \n\n", nombreMaximum);
            }
        }  while (donnee_rentre != nombreMystere);                         
      system("PAUSE");
           
    }
    • Partager sur Facebook
    • Partager sur Twitter
      26 février 2006 à 17:00:37

      hum, peut être qu'on va commencer à nous croire quand on dit que scanf c'est mal?

      en fait, quand tu rentre n'importe quoi sauf des nombres quand scanf attends des nombres, comme par exemple "*$", scanf bloque sur ce caractère et renvoie la main, sauf que si tu fait une boucle, scanf vas _tout le temps_ bloqué sur ce caractère, donc il va boucler à l'infini.
      • Partager sur Facebook
      • Partager sur Twitter

      Problème apparu au hasard

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown