Partage
  • Partager sur Facebook
  • Partager sur Twitter

Tp n°1

probleme

Sujet résolu
    20 avril 2006 à 16:44:31

    bonjour,
    je suis entrain de refair le Tp n°1, mais je ne c pas commen on mais pour mettre plusieurs dificulter...
    je m'est une fois le code:
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>

    int main(int argc, char *argv[])
    {
    int recommencer = 1;
       while (recommencer)
    {
        long choixJoueur = 0,nombreMystere = 0, nombreEntre = 0, choixDificulte = 0;
        system("CLS");
        printf("===choix du joueur===\n\n\n");
        printf("1. un joueur\n");
        printf("2. deux joueur\n");       
        printf("Quel partie voulez-vous ?   ");
        scanf("%ld", &choixJoueur);
        system("CLS");
     
        printf("===choix de la dificlte===\n\n\n");
        printf("1. facile\n");
        printf("2. moyen\n");
        printf("3. dure\n");
        printf("Quel dificulte voulez-vous ?   ");
        scanf("%ld", &choixDificulte);
        system("CLS");
       
     
     

      switch ( choixDificulte)
    {
             case 1:
                  printf("===Vous venez de choisir la dificulter facile===\n\n\n");
                  long MAX = 100, MIN = 1;
                  srand(time(NULL));
                  nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
                  break;
             case 2 :
                  printf("===Vous venez de choisire la dificulter moyen===\n\n\n");
                  long MAX = 500, MIN = 1;
                  srand(time(NULL));
                  nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
                  break;
             case 3 :
                  printf("===Vous venez de choisire la dificulter dur===\n\n\n");
                  long MAX = 1000, MIN = 1;
                  srand(time(NULL));
                  nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
                  break;
    }

     switch (choixJoueur)
     {
            case 1:
                 printf("===Vous venez de choisir la partie a un joueur===\n\n\n");
    do
    {     
                 printf("quel est votre chiffre ?\n");
                 scanf("%ld", &nombreEntre);
                 
                      if (nombreMystere > nombreEntre)
                      printf("C'est plus\n");
                      else if(nombreMystere < nombreEntre)
                      printf("C'est moin\n");
                      else
                      printf("Bravo tu a trouver le chiffre!\n\n");
    }
                      while ( nombreMystere != nombreEntre);
                      break;
                     
            case 2:
                 printf("===Vous venez de choisir la partie a deux joueurs===\n\n\n");
                 
                 printf("Joueur un, choisiser le chiffre que je joueur deux doit trouver.\n\n");
                 scanf("%ld", &nombreMystere);
                 system("CLS");
                 printf("Joueure deux c'est a vous!\n");
    do
    {                 
                      printf("quel est votre chiffre ?\n");
                      scanf("%ld", &nombreEntre);
                      if (nombreMystere > nombreEntre)
                      printf("C'est plus\n");
                      else if(nombreMystere < nombreEntre)
                      printf("C'est moin\n");
                      else
                      printf("Bravo tu a trouver le chiffre!\n\n");
    }
                      while ( nombreMystere != nombreEntre);
                      break;
                      default:
                      printf("Vous ete un imbecile\n\n");
    }                 
                                 printf("\n\n\nVoulez vous recommencer? [1: Oui, 0: Non] :  ");
                                 scanf("%ld", &recommencer);
    }                            system("CLS");
     
      return 0;
    } 


    Le probleme c que je n'arrive pas a le compiler apparament je ne pe pas mettre plusieurs foi
    long MAX = 100, MIN = 1;
                  srand(time(NULL));
                  nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;

    est se que quelqu'un pourrai m'aider, merci.
    • Partager sur Facebook
    • Partager sur Twitter
      20 avril 2006 à 16:47:51

      srand ne s'initialise qu'une fois ;)

      EDIT : EEt de preference au debut de l'appli

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

      int main(int argc, char *argv[])
      {
      int recommencer = 1;

      srand(time(NULL));

         while (recommencer)
      {
          long choixJoueur = 0,nombreMystere = 0, nombreEntre = 0, choixDificulte = 0;
          system("CLS");
          printf("===choix du joueur===\n\n\n");
          printf("1. un joueur\n");
          printf("2. deux joueur\n");       
          printf("Quel partie voulez-vous ?   ");
          scanf("%ld", &choixJoueur);
          system("CLS");
       
          printf("===choix de la dificlte===\n\n\n");
          printf("1. facile\n");
          printf("2. moyen\n");
          printf("3. dure\n");
          printf("Quel dificulte voulez-vous ?   ");
          scanf("%ld", &choixDificulte);
          system("CLS");
         
       
       

        switch ( choixDificulte)
      {
               case 1:
                    printf("===Vous venez de choisir la dificulter facile===\n\n\n");
                    long MAX = 100, MIN = 1;
                    nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
                    break;
               case 2 :
                    printf("===Vous venez de choisire la dificulter moyen===\n\n\n");
                    long MAX = 500, MIN = 1;
                    nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
                    break;
               case 3 :
                    printf("===Vous venez de choisire la dificulter dur===\n\n\n");
                    long MAX = 1000, MIN = 1;
                    nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
                    break;
      }

       switch (choixJoueur)
       {
              case 1:
                   printf("===Vous venez de choisir la partie a un joueur===\n\n\n");
      do
      {     
                   printf("quel est votre chiffre ?\n");
                   scanf("%ld", &nombreEntre);
                   
                        if (nombreMystere > nombreEntre)
                        printf("C'est plus\n");
                        else if(nombreMystere < nombreEntre)
                        printf("C'est moin\n");
                        else
                        printf("Bravo tu a trouver le chiffre!\n\n");
      }
                        while ( nombreMystere != nombreEntre);
                        break;
                       
              case 2:
                   printf("===Vous venez de choisir la partie a deux joueurs===\n\n\n");
                   
                   printf("Joueur un, choisiser le chiffre que je joueur deux doit trouver.\n\n");
                   scanf("%ld", &nombreMystere);
                   system("CLS");
                   printf("Joueure deux c'est a vous!\n");
      do
      {                 
                        printf("quel est votre chiffre ?\n");
                        scanf("%ld", &nombreEntre);
                        if (nombreMystere > nombreEntre)
                        printf("C'est plus\n");
                        else if(nombreMystere < nombreEntre)
                        printf("C'est moin\n");
                        else
                        printf("Bravo tu a trouver le chiffre!\n\n");
      }
                        while ( nombreMystere != nombreEntre);
                        break;
                        default:
                        printf("Vous ete un imbecile\n\n");
      }                 
                                   printf("\n\n\nVoulez vous recommencer? [1: Oui, 0: Non] :  ");
                                   scanf("%ld", &recommencer);
      }                            system("CLS");
       
        return 0;
      }
      • Partager sur Facebook
      • Partager sur Twitter
        20 avril 2006 à 16:51:33

        Non, je ne pense pas que ce soit ça le problème. J'ai modifié ton code en déclarant long MAX et long MIN avant le switch, et là, ça marche (sans enlever de srand, K13M). Après tu fais MAX = 100 directement sans le long quand tu es dans tes case ;) .
        • Partager sur Facebook
        • Partager sur Twitter
          20 avril 2006 à 16:51:43

          ok mais si j'en enleve 2 sa ne marche toujours pas. :euh:
          • Partager sur Facebook
          • Partager sur Twitter
            20 avril 2006 à 16:54:03

            initialise TOUJOURS tes variables au debut de tes fonctions, cas certains IDE ne voudrons pas compiler...

            Pour srand, ça ne sert à rien de l'initialiser plusieurs fois, une seul fois suffis
            • Partager sur Facebook
            • Partager sur Twitter
              20 avril 2006 à 16:57:24

              mais si je le met avant le switch je ne pourrai pas choisir la dificulter( Shadowe )... si
              sinon vous pouvais mettre un example ???
              merci
              • Partager sur Facebook
              • Partager sur Twitter
                20 avril 2006 à 17:06:46

                Si, tu pourras quand même choisir la difficulté, je parle juste de déclarer les variables MIN et MAX en tant que long avant le switch.
                Comme je ne sais pas si c'est très clair, voilà ton code tel que je le modifierai :

                  long MAX = 0, MIN = 0;
                  switch ( choixDificulte)
                {
                         case 1:
                              printf("===Vous venez de choisir la dificulter facile===\n\n\n");
                              MAX = 100, MIN = 1;
                              srand(time(NULL));
                              nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
                              break;
                         case 2 :
                              printf("===Vous venez de choisire la dificulter moyen===\n\n\n");
                              MAX = 500, MIN = 1;
                              srand(time(NULL));
                              nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
                              break;
                         case 3 :
                              printf("===Vous venez de choisire la dificulter dur===\n\n\n");
                              MAX = 1000, MIN = 1;
                              srand(time(NULL));
                              nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
                              break;
                }


                Après, je ne sais pas si c'est la meilleure méthode, je suis débutante, comme toi, et j'en suis exactement au même point ;) .
                • Partager sur Facebook
                • Partager sur Twitter
                  20 avril 2006 à 17:25:00

                  ok, c cool sa marche.
                  merci
                  • Partager sur Facebook
                  • Partager sur Twitter
                    20 avril 2006 à 20:28:48

                    MIN vaud toujours 1, non?
                    Dans ce cas, initialise le des le debut
                    long MIN = 1, MAX = 0;
                    //etc...
                    • Partager sur Facebook
                    • Partager sur Twitter

                    Tp n°1

                    × 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