Partage
  • Partager sur Facebook
  • Partager sur Twitter

Amélioration Plus-ou-moin

Sujet résolu
    14 septembre 2017 à 8:25:29

    Bonjour 

    c'est pour savoire si vous pouvez m'aider j'arrive pas limiter le nombre de coups en  joueur 1 il continue meme si le nombre de coup que je voulais et d'epasser et se meme si je fait un else if sa ne le lit pas et pour le deuxiem joueur il s'arret sans aficher la phrase que je voulais voici mon script

    #include <stdio.h>
    #include <stdlib.h>
    #include<time.h>
    
    int main(int argc,char *argv[])
    {
        printf("==== PLUSOUMOIN ====\n\n");
    
        int modeJoueur;
        const int MAX = 100, MIN = 1;
        int nombreMystere = 0 , nombreEntre = 0 , compteurDeCoups = 1;
    
    
        printf("Mode joueur ?\n\n");
        printf("1.Solo  2.Deux Joueur !\n");
        scanf("%d", &modeJoueur);
        printf("\n");
    
        switch (modeJoueur)
    {
    case 1:
    
    
        srand(time(NULL));
        nombreMystere = (rand()%(MAX - MIN + 1)) + MIN;
        const int Yes = 1 , No = 0;
    do
    {
    
        do
        {
            printf("Quels et le nombre ?");
            scanf("%d", &nombreEntre);
    
        if (nombreEntre > nombreMystere)
        {
            printf("C'est moin\n");
        }
        else if (nombreEntre <  nombreMystere )
        {
            printf("c'est plus !\n");
        }
        else if (compteurDeCoups==10)
        {
            printf("Dommage vous avez perdue!\n");
            printf("vous avez fais %d coups\n\n",compteurDeCoups);
            printf("Souhaitez vous  rejouer ?\n");
            printf("%d.Continuer  %d.Finire partie ?\n", Yes, No);
    
            scanf("%d, %d", &Yes, &No);
            printf("\n");
            {
                if (No)
            {
                printf("Merci d'avoire joue à bientôt !\n\n");
            }
            }
    
    
        }
        else
        {
    
            printf("Bravo !\n");
            printf("vous l'avez trouvez en %d coups\n\n",compteurDeCoups);
            printf("Souhaitez vous  rejouer ?\n");
            printf("%d.Continuer  %d.Finire partie ?\n", Yes, No);
    
            scanf("%d %d", &Yes, &No);
            printf("\n");
            {
                if (No)
            {
                printf("Merci d'avoire joue à bientôt !\n\n");
            }
            }
        }
        compteurDeCoups ++;
        } while(nombreEntre != nombreMystere && compteurDeCoups!=10);
        nombreMystere = (rand()%(MAX - MIN + 1)) + MIN;//nouveau chifre aleatoire
        compteurDeCoups = 1;//Remis a 1
    
    
    } while (Yes);
        break;
    case 2:
        printf("Veuillez choisir un nombre entre 1 et 100 joueur 1 !\n");
        scanf("%d", &nombreMystere);
        system ("clear");
    
        int compteurDeCoups = 10;
        const int Oui = 1, Non;
    
    
    
    do
    {
    
                do
                {
    
                printf("veulleiz saisr votre reponse !\n");
                scanf("%d", &nombreEntre);
                compteurDeCoups--;
    
            if (nombreEntre>nombreMystere)
            {
                printf("C'est moins !\n");
                printf("Il vous reste %d essai\n\n",compteurDeCoups);
            }
            else if (nombreEntre<nombreMystere)
            {
                printf("C'est plus !\n");
                printf("Il vous reste %d essai !\n\n",compteurDeCoups);
            }
            else if (compteurDeCoups == 0)
            {
                 printf("Perdu !");
            }
            else
            {
                printf("Bravo, vous avez trouvez le nombre mystère en %d coups !\n",compteurDeCoups);
                 printf("Souhaitez vous  rejouer ?\n");
            printf("%d.Continuer  %d.Finire partie ?\n", Oui, Non);
    
            scanf("%d, %d", &Oui, &Non);
            printf("\n");
            {
                if (Non)
            {
                printf("Merci d'avoire joue à bientôt !\n\n");
            }
            }
            }
    
                }  while (nombreEntre!=nombreMystere && compteurDeCoups!=0);
                compteurDeCoups = 10;//Remis a 10
                compteurDeCoups--;
                printf("Veuillez choisir un nombre entre 1 et 100 joueur 1 !\n");
                scanf("%d", &nombreMystere);
                system ("clear");
    
    
    }while (Oui);
            break;
    }
    
    
    
    
        return 0;
    }
    
    
    
    
    
    

    j'utillise la langue C j'espaire que vous m'aiderai à reoudre se probleme 

    Merci d'avance et a bientôt :)

    -
    Edité par ibrahim lebond 14 septembre 2017 à 9:25:14

    • Partager sur Facebook
    • Partager sur Twitter
      14 septembre 2017 à 9:31:53

      La tu ouvres des brackets pour rien 

       printf("\n");
              {
                  if (No)
              {
                  printf("Merci d'avoire joue à bientôt !\n\n");
              }
              }

      De plus si ton joueurs a perdu tu ne quitte pas la boucle rajoute un break et d'enlever le "else" dans le "else if" pour vérifier a chaque tour

      if (compteurDeCoups == 0)
              {
                   printf("Perdu !");
                   break;
              }

      et je te conseille de faire de plus petites fonctions et d'éviter de tout coder dans le main pour rendre ton code plus lisible.

      et évite de récupérer ac et av si tu ne les utilises pas 

      int main()




      • Partager sur Facebook
      • Partager sur Twitter
        14 septembre 2017 à 12:04:06

        es ceque comme ça ces bon

        #include <stdio.h>
        #include <stdlib.h>
        #include<time.h>
        
        int main()
        {
            printf("==== PLUSOUMOIN ====\n\n");
        
        
            int modeJoueur;
            const int MAX = 100, MIN = 1;
            int nombreMystere = 0 , nombreEntre = 0 , compteurDeCoups = 0;
        
        
        
        
            printf("Mode joueur ?\n\n");
            printf("1.Solo  2.Deux Joueur !\n");
            scanf("%d", &modeJoueur);
            printf("\n");
        
            switch (modeJoueur)
        {
        case 1:
        
        
            srand(time(NULL));
            nombreMystere = (rand()%(MAX - MIN + 1)) + MIN;
            const int Yes = 1 , No = 0;
        do
        {
        
            do
            {
                printf("Quels et le nombre ?");
                scanf("%d", &nombreEntre);
        
            if (nombreEntre > nombreMystere)
            {
                printf("C'est moin\n");
            }
            else if (nombreEntre <  nombreMystere )
            {
                printf("c'est plus !\n");
            }
             else
            {
        
                printf("Bravo !\n");
                printf("vous l'avez trouvez en %d coups\n\n",compteurDeCoups);
                printf("Souhaitez vous  rejouer ?\n");
                printf("%d.Continuer  %d.Finire partie ?\n", Yes, No);
        
                scanf("%d %d", &Yes, &No);
                printf("\n");
        
                    if (No)
                {
                    printf("Merci d'avoire joue à bientôt !\n\n");
                }
        
            }
            if (compteurDeCoups == 10)
            {
                printf("Perdue");
                break;
        
            }
            compteurDeCoups ++;
            } while(nombreEntre != nombreMystere && compteurDeCoups!=10);
            nombreMystere = (rand()%(MAX - MIN + 1)) + MIN;//nouveau chifre aleatoire
            compteurDeCoups = 0;//Remis a 1
        
        
        } while (Yes);
            break;
        case 2:
            printf("Veuillez choisir un nombre entre 1 et 100 joueur 1 !\n");
            scanf("%d", &nombreMystere);
            system ("clear");
        
            int compteurDeCoups = 10;
            const int Oui = 1, Non;
        
        
        
        do
        {
        
                    do
                    {
        
                    printf("veulleiz saisr votre reponse !\n");
                    scanf("%d", &nombreEntre);
                    compteurDeCoups--;
        
                if (nombreEntre>nombreMystere)
                {
                    printf("C'est moins !\n");
                    printf("Il vous reste %d essai\n\n",compteurDeCoups);
                }
                else if (nombreEntre<nombreMystere)
                {
                    printf("C'est plus !\n");
                    printf("Il vous reste %d essai !\n\n",compteurDeCoups);
                }
                else
                {
                     printf("Perdu !");
                     break;
                }
                if (nombreEntre == nombreMystere)
                {
                printf("Bravo, vous avez trouvez le nombre mystère en %d coups !\n",compteurDeCoups);
                printf("Souhaitez vous  rejouer ?\n");
                printf("%d.Continuer  %d.Finire partie ?\n", Oui, Non);
        
                scanf("%d %d", &Oui, &Non);
                printf("\n");
        
                    if (Non)
                {
                    printf("Merci d'avoire joue à bientôt !\n\n");
        
                }
        
                }
        
                    }  while (nombreEntre!=nombreMystere && compteurDeCoups!=0);
                    compteurDeCoups = 10;//Remis a 10
                    compteurDeCoups--;
                    printf("Veuillez choisir un nombre entre 1 et 100 joueur 1 !\n");
                    scanf("%d", &nombreMystere);
                    system ("clear");
        
        
        }while (Oui);
                break;
        }
            return 0;
        }
        
        
        

         et puis sur les scanf je reçois des message d'erreur esque c'est normale et aussi je sais pas  pour quoi mais quand je veux rejouer une partie quand

        j'apuis sur 1 pour continue rien ne se passe et quand je retape un deuxiemme fois sa s'arrete j'aimerai savoire pourquoi s'ilvous plait  

        et je ne comprend pas ce que vous vouliez dire par :

        "et je te conseille de faire de plus petites fonctions et d'éviter de tout coder dans le main pour rendre ton code plus lisible."

        pouriez vous m'expliquer je commence a aprendre le langage et je ne comprend pas



        -
        Edité par ibrahim lebond 14 septembre 2017 à 12:53:48

        • Partager sur Facebook
        • Partager sur Twitter
          14 septembre 2017 à 23:11:36

          Bon,

          je me suis un peu plus pencher sur ton code.

          Alors déjà considère que si tu compiles avec des erreurs que ton code ne marche pas même si c'est le cas.

          Dans ton cas scanf ne peut pas écrire dans une variable constante.

          Ensuite quand tu code essaies de faire ton code sur papier pour voir ce qu'il se passe vraiment et essayer de comprendre. Puisque par exemple quand tu fait :

          while (Yes);

          C'est comme si tu faisait

          while (1);

          Ce qui est une condition toujours vrais donc tu vas boucle inf.

          Pour cela évite de faire plusieurs "do" c'est plus lisible (c'est ma vision personnelle), d'avoir un "while" et ce qu'il fait en dessous.

          Ensuite évite de déclarer des variables a la volée quand tu en as besoin sauf dans des cas précis.

          Alors je t'ai fait un truc qui marche normalement je te conseille de le regarder et de bien le relire pour etre sur de tout comprendre.

          include <stdio.h>
          #include <stdlib.h>
          #include<time.h>
          
          int main()
          {
            int modeJoueur;
            int nombreMystere = 0 , nombreEntre = 0;
            const int MAX = 100, MIN = 1;
            int Yes;
            int compteurDeCoups = 0;
          
          
            printf("==== PLUSOUMOIN ====\n\n");
            printf("Mode joueur ?\n\n");
            printf("1.Solo 2.Deux Joueur !\n");
            scanf("%d", &modeJoueur);
            printf("\n");
          
          
            if (modeJoueur == 1)
              {
                srand(time(NULL));
                nombreMystere = (rand()%(MAX - MIN + 1)) + MIN;
                while (Yes)
                  {
          
                    while(nombreEntre != nombreMystere && compteurDeCoups <= 10)
                      {
                        printf("Quels et le nombre ?\n");
                        scanf("%d", &nombreEntre);
                        if (nombreEntre > nombreMystere)
                          {
                            printf("C'est moins !\n\n");
                          }
                        else if (nombreEntre < nombreMystere )
                          {
                            printf("C'est plus !\n\n");
                          }
                        else
                          {
                            printf("Bravo !\n");
                            printf("vous l'avez trouvez en %d coup(s)\n\n",compteurDeCoups);
                            printf("Souhaitez vous rejouer ?\n");
                            printf("1 : Continuer\t0 : Finire partie ?\n");
                            scanf("%d", &Yes);
                            printf("\n");
                          }
           if (compteurDeCoups == 10)
                          {
                            printf("Perdue, vous n'avez plus de coups\n");
                            break;
                          }
                        compteurDeCoups++;
                      }
                    printf("Vous avez perdues\n");
                    printf("Souhaitez vous rejouer ?\n");
                    printf("1.Continuer 2 : Finire partie ?\n");
                    scanf("%d", &Yes);
                    printf("\n");
                    if (Yes != 1)
                      {
                        printf("A bientot !");
                        return (0);
                      }
          
                    nombreMystere = (rand()%(MAX - MIN + 1)) + MIN;//nouveau chifre aleatoire                       
                    compteurDeCoups = 0; //Remis a 1                                                                
                  }
              }
          
            if (modeJoueur == 2)
              {
                while (Yes)
                  {
                    printf("Veuillez choisir un nombre entre 1 et 100 joueur 1 !\n");
                    scanf("%d", &nombreMystere);
                    system ("clear");
                    while (nombreEntre!=nombreMystere && compteurDeCoups <= 10)
                      {
                        printf("Veuillez saisir votre réponse !\n");
                        scanf("%d", &nombreEntre);
                        if (nombreEntre > nombreMystere)
                          {
                            printf("C'est moins !\n");
                            printf("Il vous reste %d essai\n\n",compteurDeCoups);
                          }
                        else if (nombreEntre < nombreMystere)
                          {
                            printf("C'est plus !\n");
                            printf("Il vous reste %d essai !\n\n", 10 - compteurDeCoups);
                          }
                        if (nombreEntre == nombreMystere)
                          {
                            printf("Bravo, vous avez trouvez le nombre mystère en %d coups !\n",compteurDeCoups);
                          }
            compteurDeCoups++;
                      }
                    printf("Vous avez perdues\n");
                    printf("Souhaitez vous rejouer ?\n");
                    scanf("%d", &Yes);
                    printf("\n");
                    if (Yes != 1)
                      {
                        printf("A bientot !");
                        return (0);
                      }
                    compteurDeCoups = 10; //Remis a 10                                                              
                  }
              }
            return 0;
          }
          
          



          Si tu veut l’améliorer tu devrais faire comme je te l'ai dit et diviser ton code en plusieurs fonction.

          Pour savoir comment faire je te conseille de regarder sur internet et si tu as un problèmes tu peut me demander

          • Partager sur Facebook
          • Partager sur Twitter
            15 septembre 2017 à 7:05:57

            Merci Beaucoup grace a vous j'ai pu passer a la derniere amélioration 

            voici le script de la dernier amelioration qui et le niveau de dificulter jaimerai votre avis dessus 

            #include <stdio.h>
            #include <stdlib.h>
            #include<time.h>
            
            int main()
            {
                printf("==== PLUSOUMOIN ====\n\n");
            
                int niveauxDeJeux;
                int modeJoueur;
                const int MAX = 100, MIN = 1;
                int nombreMaximum = 500, nombreMinimum = 1;
                int nombreMaxi = 1000, nombreMin = 1;
                int nombreMystere = 0 , nombreEntre = 0 ;
                int compteurDeCoups = 1;
                int Yes = 1;
            
                printf("Veuillez choisir votre niveau de dificulter !\n");
                printf("1.Debutant \n");
                printf("2.Intermediaire \n");
                printf("3.Pro \n");
                scanf("%d", &niveauxDeJeux);
                printf("\n");
            
                if (niveauxDeJeux == 1)
                {
            
                printf("Mode joueur ?\n\n");
                printf("1.Solo  2.Deux Joueur !\n");
                scanf("%d", &modeJoueur);
                printf("\n");
            
                if (modeJoueur == 1)
            {
            
                    srand(time(NULL));
                    nombreMystere = (rand()%(MAX - MIN + 1)) + MIN;
                    while (Yes)
                {
            
                    while (nombreEntre != nombreMystere && compteurDeCoups <= 10)
                    {
                    printf("Quels et le nombre ?");
                    scanf("%d", &nombreEntre);
            
                    if (nombreEntre > nombreMystere)
                    {
                    printf("C'est moin\n");
                    }
                    else if (nombreEntre <  nombreMystere )
                    {
                    printf("c'est plus !\n");
                    }
                    else
                    {
            
                    printf("Bravo !\n");
                    printf("vous l'avez trouvez en %d coups\n\n",compteurDeCoups);
                    printf("Souhaitez vous rejouer ?\n");
                    printf("1.Continuer 2 : Finire partie ?\n");
                    scanf("%d", &Yes);
                    printf("\n");
                    }
            
                if (compteurDeCoups == 10)
                {
                    printf("Perdue vous n'avez plus de coups !\n");
                    printf("Souhaitez vous rejouer ?\n");
                    printf("1.Continuer 2 : Finire partie ?\n");
                    scanf("%d", &Yes);
                    printf("\n");
                    break;
                }
                compteurDeCoups ++;
                }
            
            
            if (Yes != 1)
                {
                printf("A bientot !");
            return (0);
                }
                nombreMystere = (rand()%(MAX - MIN + 1)) + MIN;//nouveau chifre aleatoire                      
                compteurDeCoups = 0; //Remis a 1                                                               
                }
            }
            
            if (modeJoueur == 2)
            {
                while (Yes)
                {
                    printf("Veuillez choisir un nombre entre 1 et 100 joueur 1 !\n");
                    scanf("%d", &nombreMystere);
                    system ("clear");
                    while   (nombreEntre!=nombreMystere && compteurDeCoups <=10)
                    {
                        printf("Veuillez saisir  votre reponse !\n");
                        scanf("%d", &nombreEntre);
                        printf("\n");
                        if (nombreEntre < nombreMystere)
                        {
                            printf("c'est plus\n");
                            printf("vous avais fait %d éssai /10 !\n",compteurDeCoups);
                        }
                        else if (nombreEntre > nombreMystere)
                        {
                            printf("C'est moin\n");
                            printf("vous avais fait %d éssai /10!\n",compteurDeCoups);
                        }
                    if (nombreEntre == nombreMystere)
                    {
                        printf("Bravo vous avez trouvez le nombre mystere");
                        printf("Souhaitez  vous rejouer ?\n");
                        printf("1.Continuer 2 : Finire partie ?\n");
                        scanf("%d", &Yes);
                        printf("\n");
                      if (Yes != 1)
                        {
                            printf("A bientot !");
                      return (0);
                      }
                    }
                compteurDeCoups ++;
                    }
            if (compteurDeCoups == 10)
            {
                      printf("Voous avez perdu !\n");
                      printf("Souhaitez vous rejouer ?\n");
                      printf("1.Continuer 2 : Finire partie ?\n");
                      scanf("%d", &Yes);
                      printf("\n");
                      break;
            }
                if (Yes != 1)
                    {
                            printf("A bientot !");
                return (0);
                    }
                    compteurDeCoups = 0;
                    }
            }
                }
            if (niveauxDeJeux == 2)
            {
            
                printf("Mode joueur ?\n\n");
                printf("1.Solo  2.Deux Joueur !\n");
                scanf("%d", &modeJoueur);
                printf("\n");
            
                if (modeJoueur == 1)
            {
            
                    srand(time(NULL));
                    nombreMystere = (rand()%(nombreMaximum - nombreMinimum + 1)) + MIN;
                    while (Yes)
                {
            
                    while (nombreEntre != nombreMystere && compteurDeCoups <= 10)
                    {
                    printf("Quels et le nombre ?");
                    scanf("%d", &nombreEntre);
            
                    if (nombreEntre > nombreMystere)
                    {
                    printf("C'est moin\n");
                    }
                    else if (nombreEntre <  nombreMystere )
                    {
                    printf("c'est plus !\n");
                    }
                    else
                    {
            
                    printf("Bravo !\n");
                    printf("vous l'avez trouvez en %d coups\n\n",compteurDeCoups);
                    printf("Souhaitez vous rejouer ?\n");
                    printf("1.Continuer 2 : Finire partie ?\n");
                    scanf("%d", &Yes);
                    printf("\n");
                    }
            
                if (compteurDeCoups == 10)
                {
                    printf("Perdue vous n'avez plus de coups !\n");
                    printf("Souhaitez vous rejouer ?\n");
                    printf("1.Continuer 2 : Finire partie ?\n");
                    scanf("%d", &Yes);
                    printf("\n");
                    break;
                }
                compteurDeCoups ++;
                }
            
            
            if (Yes != 1)
                {
                printf("A bientot !");
            return (0);
                }
                nombreMystere = (rand()%(nombreMaximum - nombreMinimum + 1)) + MIN;//nouveau chifre aleatoire                      
                compteurDeCoups = 0; //Remis a 1                                                               
                }
            }
            
            if (modeJoueur == 2)
            {
                while (Yes)
                {
                    printf("Veuillez choisir un nombre entre 1 et 500 joueur 1 !\n");
                    scanf("%d", &nombreMystere);
                    system ("clear");
                    while   (nombreEntre!=nombreMystere && compteurDeCoups <=10)
                    {
                        printf("Veuillez saisir  votre reponse !\n");
                        scanf("%d", &nombreEntre);
                        printf("\n");
                        if (nombreEntre < nombreMystere)
                        {
                            printf("c'est plus\n");
                            printf("vous avais fait %d éssai /10 !\n",compteurDeCoups);
                        }
                        else if (nombreEntre > nombreMystere)
                        {
                            printf("C'est moin\n");
                            printf("vous avais fait %d éssai /10!\n",compteurDeCoups);
                        }
                    if (nombreEntre == nombreMystere)
                    {
                        printf("Bravo vous avez trouvez le nombre mystere");
                        printf("Souhaitez  vous rejouer ?\n");
                        printf("1.Continuer 2 : Finire partie ?\n");
                        scanf("%d", &Yes);
                        printf("\n");
                      if (Yes != 1)
                        {
                            printf("A bientot !");
                      return (0);
                      }
                    }
                compteurDeCoups ++;
                    }
            if (compteurDeCoups == 10)
            {
                      printf("Voous avez perdu !\n");
                      printf("Souhaitez vous rejouer ?\n");
                      printf("1.Continuer 2 : Finire partie ?\n");
                      scanf("%d", &Yes);
                      printf("\n");
                      break;
            }
                if (Yes != 1)
                    {
                            printf("A bientot !");
                return (0);
                    }
                    compteurDeCoups = 0;
                    }
            }
            }
            
            if (niveauxDeJeux == 3)
            {
            
            
                printf("Mode joueur ?\n\n");
                printf("1.Solo  2.Deux Joueur !\n");
                scanf("%d", &modeJoueur);
                printf("\n");
            
                if (modeJoueur == 1)
            {
            
                    srand(time(NULL));
                    nombreMystere = (rand()%(nombreMaxi - nombreMin+ 1)) + MIN;
                    while (Yes)
                {
            
                    while (nombreEntre != nombreMystere && compteurDeCoups <= 10)
                    {
                    printf("Quels et le nombre ?");
                    scanf("%d", &nombreEntre);
            
                    if (nombreEntre > nombreMystere)
                    {
                    printf("C'est moin\n");
                    }
                    else if (nombreEntre <  nombreMystere )
                    {
                    printf("c'est plus !\n");
                    }
                    else
                    {
            
                    printf("Bravo !\n");
                    printf("vous l'avez trouvez en %d coups\n\n",compteurDeCoups);
                    printf("Souhaitez vous rejouer ?\n");
                    printf("1.Continuer 2 : Finire partie ?\n");
                    scanf("%d", &Yes);
                    printf("\n");
                    }
            
                if (compteurDeCoups == 10)
                {
                    printf("Perdue vous n'avez plus de coups !\n");
                    printf("Souhaitez vous rejouer ?\n");
                    printf("1.Continuer 2 : Finire partie ?\n");
                    scanf("%d", &Yes);
                    printf("\n");
                    break;
                }
                compteurDeCoups ++;
                }
            
            
            if (Yes != 1)
                {
                printf("A bientot !");
            return (0);
                }
                nombreMystere = (rand()%(nombreMaxi - nombreMin + 1)) + MIN;//nouveau chifre aleatoire                      
                compteurDeCoups = 0; //Remis a 1                                                               
                }
            }
            
            if (modeJoueur == 2)
            {
                while (Yes)
                {
                    printf("Veuillez choisir un nombre entre 1 et 1000 joueur 1 !\n");
                    scanf("%d", &nombreMystere);
                    system ("clear");
                    while   (nombreEntre!=nombreMystere && compteurDeCoups <=10)
                    {
                        printf("Veuillez saisir  votre reponse !\n");
                        scanf("%d", &nombreEntre);
                        printf("\n");
                        if (nombreEntre < nombreMystere)
                        {
                            printf("c'est plus\n");
                            printf("vous avais fait %d éssai /10 !\n",compteurDeCoups);
                        }
                        else if (nombreEntre > nombreMystere)
                        {
                            printf("C'est moin\n");
                            printf("vous avais fait %d éssai /10!\n",compteurDeCoups);
                        }
                    if (nombreEntre == nombreMystere)
                    {
                        printf("Bravo vous avez trouvez le nombre mystere");
                        printf("Souhaitez  vous rejouer ?\n");
                        printf("1.Continuer 2 : Finire partie ?\n");
                        scanf("%d", &Yes);
                        printf("\n");
                      if (Yes != 1)
                        {
                            printf("A bientot !");
                      return (0);
                      }
                    }
                compteurDeCoups ++;
                    }
            if (compteurDeCoups == 10)
            {
                      printf("Voous avez perdu !\n");
                      printf("Souhaitez vous rejouer ?\n");
                      printf("1.Continuer 2 : Finire partie ?\n");
                      scanf("%d", &Yes);
                      printf("\n");
                      break;
            }
                if (Yes != 1)
                    {
                            printf("A bientot !");
                return (0);
                    }
                    compteurDeCoups = 0;
                    }
            }
            }
            
            
            
            
                return 0;
            }
            
            
            
            

            et aussi en suivant le script que vous m'avet conseiller j'ai reçue beaucoup de message d'ereur 

            de ce type 

            4 error: stray ‘\302’ in program|

            4  error: stray ‘\240’ in program|

            que j'ai resolu mais jaimerai bien que vous mexpliquer ce type d'erreur et pourquoi il apparei et si cétait possible j'aurais aimes que vous testier mon script pour voire si tout va bien j'aimerai avoire votre avis

            Merci beaucoup d'avance :):D

            -
            Edité par ibrahim lebond 15 septembre 2017 à 11:51:31

            • Partager sur Facebook
            • Partager sur Twitter
              15 septembre 2017 à 15:19:07

              Hello,

              ThomasBurgaud1 a écrit:

              Pour cela évite de faire plusieurs "do" c'est plus lisible (c'est ma vision personnelle), d'avoir un "while" et ce qu'il fait en dessous. 

              C'est en effet très personnel: voir ici  ;)

              De toute façon, on ne va revenir la-dessus: si il y a for, while et do-while, c'est que chaque type de boucle a sa raison d'être.

              • Partager sur Facebook
              • Partager sur Twitter

              On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

                15 septembre 2017 à 15:51:46

                edgarjacobs a écrit:

                De toute façon, on ne va revenir la-dessus: si il y a for, while et do-while, c'est que chaque type de boucle a sa raison d'être.

                J'ai pas dit que do-while était inutile je dit juste que dans son cas le fait de faire des do-while est pas lisible.

                Et puis il existe en c certaine chose inutiles comme les variables register qui de nos jours sont gérer par les compilateur le mots clefs et donc devenus inutile!;)

                • Partager sur Facebook
                • Partager sur Twitter
                  15 septembre 2017 à 15:53:19

                  ThomasBurgaud1 a écrit:

                  Et puis il existe en c certaine chose inutiles comme les variables register qui de nos jours sont gérer par les compilateur le mots clefs et donc devenus inutile!;)

                  Et la rétro-compatibilité ?

                  • Partager sur Facebook
                  • Partager sur Twitter

                  On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

                    15 septembre 2017 à 16:40:04

                    Bonsoire

                    c'est pour savoire comment le rendre plus lisible car pour l'instant je sais faire que sa et puis pour ajouter un fonction je vien de commencer le chapitre donc je sais pas l'utuliser encore

                    • Partager sur Facebook
                    • Partager sur Twitter
                      17 septembre 2017 à 12:20:27

                      Hello Ibrahim!

                      J'ai copié votre programme et il marche bien. Pour le rendre plus lisible,on peut améliorer le script en insérant des

                        lignes de commentaire genre:

                      //************************* NIVEAU DE DIFICULTE_DEBUTANT *****************************
                          if (niveauxDeJeux == 1)
                          {

                      ou encore:

                      //********** MODE SOLO ****************
                          if (modeJoueur == 1)
                      {

                      Un autre truc: on peut creer une fonction(void) avant le int main() pour remplacer un bout de code qui se répète

                      3 fois.Par exemple

                      void ModeJoueur(void) {
                          printf("Mode joueur ?\n\n");
                          printf("1.Solo  2.Deux Joueur !\n");
                          scanf("%d", &modeJoueur);
                          printf("\n");
                      }

                      puis appeler la fonction par juste:ModeJoueur();

                      Par exemple:

                      //********************* NIVEAU DE DIFICULTE_INTERMEDIAIRE **********************
                      if (niveauxDeJeux == 2)
                      {
                          ModeJoueur();
                          
                                      //********** MODE SOLO ****************
                          if (modeJoueur == 1)
                      {






                      • Partager sur Facebook
                      • Partager sur Twitter
                        17 septembre 2017 à 13:51:46

                        Hello,

                        AzizKhellaf a écrit:

                        Un autre truc: on peut creer une fonction(void) avant le int main() pour remplacer un bout de code qui se répète

                        Bien sur, mais à ce stade du tutoriel, les fonctions ne sont pas encore connues ;)

                        • Partager sur Facebook
                        • Partager sur Twitter

                        On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

                          18 septembre 2017 à 6:17:56

                          AzizKhellaf a écrit:

                          Un autre truc: on peut creer une fonction(void) avant le int main() pour remplacer un bout de code qui se répète

                          j'ai essayer mais quand je le fait sa me dit de déclarer le &modeJoueur et quand je le fait et que je lance le code apres le choix du mode joueur sa s'arette .

                          #include <stdio.h>
                          #include <stdlib.h>
                          #include<time.h>
                          
                          void ModeJoueur(void){
                              int modeJoueur;
                          
                              printf("Mode joueur ?\n\n");
                              printf("1.Solo  2.Deux Joueur !\n");
                              scanf("%d", &modeJoueur);
                              printf("\n");
                          }
                          
                          int main()
                          {
                              printf("==== PLUSOUMOIN ====\n\n");
                          
                              int niveauxDeJeux;
                              int modeJoueur;
                              const int MAX = 100, MIN = 1;
                              int nombreMaximum = 500, nombreMinimum = 1;
                              int nombreMaxi = 1000, nombreMin = 1;
                              int nombreMystere = 0 , nombreEntre = 0 ;
                              int compteurDeCoups = 1;
                              int Yes = 1;
                          
                              printf("Veuillez choisir votre niveau de dificulter !\n");
                              printf("1.Debutant \n");
                              printf("2.Intermediaire \n");
                              printf("3.Pro \n");
                              scanf("%d", &niveauxDeJeux);
                              printf("\n");
                          
                              if (niveauxDeJeux == 1)
                              {
                          
                              ModeJoueur();
                          
                              if (modeJoueur == 1)
                          {
                          
                                  srand(time(NULL));
                                  nombreMystere = (rand()%(MAX - MIN + 1)) + MIN;
                                  while (Yes)
                              {
                          
                                  while (nombreEntre != nombreMystere && compteurDeCoups <= 10)
                                  {
                                  printf("Quels et le nombre ?");
                                  scanf("%d", &nombreEntre);
                          
                                  if (nombreEntre > nombreMystere)
                                  {
                                  printf("C'est moin\n");
                                  }
                                  else if (nombreEntre <  nombreMystere )
                                  {
                                  printf("c'est plus !\n");
                                  }
                                  else
                                  {
                          
                                  printf("Bravo !\n");
                                  printf("vous l'avez trouvez en %d coups\n\n",compteurDeCoups);
                                  printf("Souhaitez vous rejouer ?\n");
                                  printf("1.Continuer 2 : Finire partie ?\n");
                                  scanf("%d", &Yes);
                                  printf("\n");
                                  }
                          
                              if (compteurDeCoups == 10)
                              {
                                  printf("Perdue vous n'avez plus de coups !\n");
                                  printf("Souhaitez vous rejouer ?\n");
                                  printf("1.Continuer 2 : Finire partie ?\n");
                                  scanf("%d", &Yes);
                                  printf("\n");
                                  break;
                              }
                              compteurDeCoups ++;
                              }
                          
                          
                          if (Yes != 1)
                              {
                              printf("A bientot !");
                          return (0);
                              }
                              nombreMystere = (rand()%(MAX - MIN + 1)) + MIN;//nouveau chifre aleatoire                      
                              compteurDeCoups = 0; //Remis a 1                                                               
                              }
                          }
                          
                          if (modeJoueur == 2)
                          {
                              while (Yes)
                              {
                                  printf("Veuillez choisir un nombre entre 1 et 100 joueur 1 !\n");
                                  scanf("%d", &nombreMystere);
                                  system ("clear");
                                  while   (nombreEntre!=nombreMystere && compteurDeCoups <=10)
                                  {
                                      printf("Veuillez saisir  votre reponse !\n");
                                      scanf("%d", &nombreEntre);
                                      printf("\n");
                                      if (nombreEntre < nombreMystere)
                                      {
                                          printf("c'est plus\n");
                                          printf("vous avais fait %d éssai /10 !\n",compteurDeCoups);
                                      }
                                      else if (nombreEntre > nombreMystere)
                                      {
                                          printf("C'est moin\n");
                                          printf("vous avais fait %d éssai /10!\n",compteurDeCoups);
                                      }
                                  if (nombreEntre == nombreMystere)
                                  {
                                      printf("Bravo vous avez trouvez le nombre mystere");
                                      printf("Souhaitez  vous rejouer ?\n");
                                      printf("1.Continuer 2 : Finire partie ?\n");
                                      scanf("%d", &Yes);
                                      printf("\n");
                                    if (Yes != 1)
                                      {
                                          printf("A bientot !");
                                    return (0);
                                    }
                                  }
                              compteurDeCoups ++;
                                  }
                          if (compteurDeCoups == 10)
                          {
                                    printf("Voous avez perdu !\n");
                                    printf("Souhaitez vous rejouer ?\n");
                                    printf("1.Continuer 2 : Finire partie ?\n");
                                    scanf("%d", &Yes);
                                    printf("\n");
                                    break;
                          }
                              if (Yes != 1)
                                  {
                                          printf("A bientot !");
                              return (0);
                                  }
                                  compteurDeCoups = 0;
                                  }
                          }
                              }
                          
                              // ***** niveau intermediaire *******
                          if (niveauxDeJeux == 2)
                          {
                              ModeJoueur();
                              // ********** solo ****
                              if (modeJoueur == 1)
                          {
                          
                                  srand(time(NULL));
                                  nombreMystere = (rand()%(nombreMaximum - nombreMinimum + 1)) + MIN;
                                  while (Yes)
                              {
                          
                                  while (nombreEntre != nombreMystere && compteurDeCoups <= 10)
                                  {
                                  printf("Quels et le nombre ?");
                                  scanf("%d", &nombreEntre);
                          
                                  if (nombreEntre > nombreMystere)
                                  {
                                  printf("C'est moin\n");
                                  }
                                  else if (nombreEntre <  nombreMystere )
                                  {
                                  printf("c'est plus !\n");
                                  }
                                  else
                                  {
                          
                                  printf("Bravo !\n");
                                  printf("vous l'avez trouvez en %d coups\n\n",compteurDeCoups);
                                  printf("Souhaitez vous rejouer ?\n");
                                  printf("1.Continuer 2 : Finire partie ?\n");
                                  scanf("%d", &Yes);
                                  printf("\n");
                                  }
                          
                              if (compteurDeCoups == 10)
                              {
                                  printf("Perdue vous n'avez plus de coups !\n");
                                  printf("Souhaitez vous rejouer ?\n");
                                  printf("1.Continuer 2 : Finire partie ?\n");
                                  scanf("%d", &Yes);
                                  printf("\n");
                                  break;
                              }
                              compteurDeCoups ++;
                              }
                          
                          
                          if (Yes != 1)
                              {
                              printf("A bientot !");
                          return (0);
                              }
                              nombreMystere = (rand()%(nombreMaximum - nombreMinimum + 1)) + MIN;//nouveau chifre aleatoire                      
                              compteurDeCoups = 0; //Remis a 1                                                               
                              }
                          }
                          
                          // ***** Joue a 2 *********
                          if (modeJoueur == 2)
                          {
                              while (Yes)
                              {
                                  printf("Veuillez choisir un nombre entre 1 et 500 joueur 1 !\n");
                                  scanf("%d", &nombreMystere);
                                  system ("clear");
                                  while   (nombreEntre!=nombreMystere && compteurDeCoups <=10)
                                  {
                                      printf("Veuillez saisir  votre reponse !\n");
                                      scanf("%d", &nombreEntre);
                                      printf("\n");
                                      if (nombreEntre < nombreMystere)
                                      {
                                          printf("c'est plus\n");
                                          printf("vous avais fait %d éssai /10 !\n",compteurDeCoups);
                                      }
                                      else if (nombreEntre > nombreMystere)
                                      {
                                          printf("C'est moin\n");
                                          printf("vous avais fait %d éssai /10!\n",compteurDeCoups);
                                      }
                                  if (nombreEntre == nombreMystere)
                                  {
                                      printf("Bravo vous avez trouvez le nombre mystere");
                                      printf("Souhaitez  vous rejouer ?\n");
                                      printf("1.Continuer 2 : Finire partie ?\n");
                                      scanf("%d", &Yes);
                                      printf("\n");
                                    if (Yes != 1)
                                      {
                                          printf("A bientot !");
                                    return (0);
                                    }
                                  }
                              compteurDeCoups ++;
                                  }
                          if (compteurDeCoups == 10)
                          {
                                    printf("Voous avez perdu !\n");
                                    printf("Souhaitez vous rejouer ?\n");
                                    printf("1.Continuer 2 : Finire partie ?\n");
                                    scanf("%d", &Yes);
                                    printf("\n");
                                    break;
                          }
                              if (Yes != 1)
                                  {
                                          printf("A bientot !");
                              return (0);
                                  }
                                  compteurDeCoups = 0;
                                  }
                          }
                          }
                          
                          // Niveau Pro / Difficile
                          if (niveauxDeJeux == 3)
                          {
                          
                                ModeJoueur();
                          
                              if (modeJoueur == 1)
                          {
                          
                                  srand(time(NULL));
                                  nombreMystere = (rand()%(nombreMaxi - nombreMin+ 1)) + MIN;
                                  while (Yes)
                              {
                          
                                  while (nombreEntre != nombreMystere && compteurDeCoups <= 10)
                                  {
                                  printf("Quels et le nombre ?");
                                  scanf("%d", &nombreEntre);
                          
                                  if (nombreEntre > nombreMystere)
                                  {
                                  printf("C'est moin\n");
                                  }
                                  else if (nombreEntre <  nombreMystere )
                                  {
                                  printf("c'est plus !\n");
                                  }
                                  else
                                  {
                          
                                  printf("Bravo !\n");
                                  printf("vous l'avez trouvez en %d coups\n\n",compteurDeCoups);
                                  printf("Souhaitez vous rejouer ?\n");
                                  printf("1.Continuer 2 : Finire partie ?\n");
                                  scanf("%d", &Yes);
                                  printf("\n");
                                  }
                          
                              if (compteurDeCoups == 10)
                              {
                                  printf("Perdue vous n'avez plus de coups !\n");
                                  printf("Souhaitez vous rejouer ?\n");
                                  printf("1.Continuer 2 : Finire partie ?\n");
                                  scanf("%d", &Yes);
                                  printf("\n");
                                  break;
                              }
                              compteurDeCoups ++;
                              }
                          
                          
                          if (Yes != 1)
                              {
                              printf("A bientot !");
                          return (0);
                              }
                              nombreMystere = (rand()%(nombreMaxi - nombreMin + 1)) + MIN;//nouveau chifre aleatoire                      
                              compteurDeCoups = 0; //Remis a 1                                                               
                              }
                          }
                          
                          if (modeJoueur == 2)
                          {
                              while (Yes)
                              {
                                  printf("Veuillez choisir un nombre entre 1 et 1000 joueur 1 !\n");
                                  scanf("%d", &nombreMystere);
                                  system ("clear");
                                  while   (nombreEntre!=nombreMystere && compteurDeCoups <=10)
                                  {
                                      printf("Veuillez saisir  votre reponse !\n");
                                      scanf("%d", &nombreEntre);
                                      printf("\n");
                                      if (nombreEntre < nombreMystere)
                                      {
                                          printf("c'est plus\n");
                                          printf("vous avais fait %d éssai /10 !\n",compteurDeCoups);
                                      }
                                      else if (nombreEntre > nombreMystere)
                                      {
                                          printf("C'est moin\n");
                                          printf("vous avais fait %d éssai /10!\n",compteurDeCoups);
                                      }
                                  if (nombreEntre == nombreMystere)
                                  {
                                      printf("Bravo vous avez trouvez le nombre mystere");
                                      printf("Souhaitez  vous rejouer ?\n");
                                      printf("1.Continuer 2 : Finire partie ?\n");
                                      scanf("%d", &Yes);
                                      printf("\n");
                                    if (Yes != 1)
                                      {
                                          printf("A bientot !");
                                    return (0);
                                    }
                                  }
                              compteurDeCoups ++;
                                  }
                          if (compteurDeCoups == 10)
                          {
                                    printf("Voous avez perdu !\n");
                                    printf("Souhaitez vous rejouer ?\n");
                                    printf("1.Continuer 2 : Finire partie ?\n");
                                    scanf("%d", &Yes);
                                    printf("\n");
                                    break;
                          }
                              if (Yes != 1)
                                  {
                                          printf("A bientot !");
                              return (0);
                                  }
                                  compteurDeCoups = 0;
                                  }
                          }
                          }
                          
                          
                          
                          
                              return 0;
                          }
                          
                          
                          
                          

                          voici le code 

                          et merci pour l'aide que vous m'vez aporter pour finir ce chapitre

                          -
                          Edité par ibrahim lebond 18 septembre 2017 à 9:21:20

                          • Partager sur Facebook
                          • Partager sur Twitter
                            19 septembre 2017 à 16:06:03

                            Hello Ibrahim,

                            Généralement les variables se déclarent UNE SEULE FOIS avant la fonction "Main" juste après les "#include". Le programme(ou compilateur)doit connaitre ces variables à l'avance pour pouvoir résoudre les fonctions qu'il va rencontrer.

                            Essaye de déclarer "int modeJoueur;" au début, MAIS PAS une 2ème fois dans la fonction elle-mème. Exemple: au lieu de:

                            #include<time.h>
                             
                            void ModeJoueur(void){
                                int modeJoueur;
                             
                                printf("Mode joueur ?\n\n");
                                printf("1.Solo  2.Deux Joueur !\n");
                                scanf("%d", &modeJoueur);
                                printf("\n");
                            }
                             

                            je fais:

                            #include<time.h>
                            
                            int modeJoueur;
                             
                            void ModeJoueur(void){
                                //int modeJoueur;
                             




                            • Partager sur Facebook
                            • Partager sur Twitter
                              21 septembre 2017 à 6:07:00

                              Bonjour

                              Merci sa fonctionne correctement voila j'ai envoyer le script avec une seule fonction main pour le dernier exercice et un des ma correcteur ma dit ceci 

                              1. Le compteur de coups na marche pas correctement.
                              2. On ne peut pas relancé une nouvelle partie. 
                              3. On tombe dans une boucle infinie si on met un met une lettre quand il faut trouvé le numéros mystère.
                              4. Ton code source n'est pas assez optimisé.

                              voila je suis pas fort pour repérer les bug car chez sa fonctionner bien donc j'aimerais votre avis pour voire et corriger c'est bug si sa ne vous derange pas 

                              Merci d'avance et a la prochaine . 

                              • Partager sur Facebook
                              • Partager sur Twitter
                                21 septembre 2017 à 8:35:53

                                Pour bien comprendre la portée des déclarations

                                • lis attentivement le code ci-dessous
                                • essaie de deviner précisément ce qu'il va afficher
                                • fais-le tourner pour vérifier
                                #include <stdio.h>
                                
                                char *m = "globale";
                                
                                void f() {
                                	printf("Dans f, m désigne la variable %s\n", m);
                                }
                                
                                void g() {
                                	char *m = "de g";
                                	printf("Dans g, m désigne la variable %s\n", m);
                                }
                                
                                int main()
                                {
                                	char *m = "du main";
                                	printf("Dans main, m désigne la variable %s\n", m);
                                	
                                	f();
                                	g();
                                	
                                	return 0;
                                }
                                

                                -
                                Edité par michelbillaud 21 septembre 2017 à 8:38:32

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  21 septembre 2017 à 9:19:19

                                  Hello

                                  Merci je voyait dans certain script mais je savais pas a quoi sa servait le %s et on la pas encore appris dans le cours ou soit je l'ai rater la je suis au 3 chapitre de la partie 2 .

                                  Mais en quoi ces en rapport avec ce que le correcteur ma dit je ne comprend pas

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    21 septembre 2017 à 9:27:50

                                    Bonjour,

                                    Je pense que michelbillaud veut te faire comprendre la portée des variables.

                                    Donc demandes toi où est disponible la variable modeJoueur dans ton code :

                                    - Qu'elle fonction y a accès ?

                                    - Que ce passe t'il si c'est une globale ?

                                    - Comment ton main peut le récupérer ?

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      21 septembre 2017 à 9:41:07

                                      Bonjour

                                      Est-ce-que sa veut dire que au lieu de réécrire le mode joueur pour tout les niveaux j'aurais pu écrire le contenue qu'une seule fois et i faire appelle pour les autres niveau avec cette déclaration %s . et que au lieu de faire tout les scanf en chiffre j'aurais pu les faire en lettre ou en mots.

                                      -
                                      Edité par ibrahim lebond 21 septembre 2017 à 9:43:17

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        21 septembre 2017 à 9:52:35

                                        Non,

                                        Ton problème est que tu re-déclare ton ModeJoueur a certains endroits et cela le réécrit tu n'as donc pas accès à la bonne valeur ans ton main.

                                        Le "%s" permet d'afficher les "char *" c'est à dire les strings si tu utilises un "%s" dans scanf il faut que t'as string est la bonne place allouer en mémoire (je pense que tu n'en ai pas la dans le cour de C donc ne t'en occupe pas pour l'instant).

                                        -
                                        Edité par ThomasBurgaud1 21 septembre 2017 à 12:46:15

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          21 septembre 2017 à 14:30:33

                                          1/ Si j'avais fait  int m = 1, et diverses valeurs, on verrait moins bien d'où vient ce qui s'affiche.

                                          Peut importent finalement les détails de char* et %s, le printf affiche un message contenu dans la variable m. Mais laquelle, sachant que plusieurs portent le même nom ?

                                          2/ pour le "code pas optimisé", je laisse au soi-disant correcteur la responsabilité de ses propos. Le boulot d'un correcteur, c'est de fournir une correction (ne serait-ce qu'une critique) compréhensible par le corrigé.

                                          Ce qu'on peut remarquer, c'est que des parties de code se répètent.

                                          • effectivement, ça veut dire que le programme occupera plus de place que ce qui est nécessaire pour résoudre le problème. Ca n'optimise pas la place. Ce n'est pas un vrai problème sur un PC, mais...
                                          • ça veut dire aussi que pour modifier un truc dans le programme, il faudra sans doute le faire à plusieurs endroits. Et que relire le programme nécessite plus de travail, parce qu'il est plus long. Ca n'optimise pas le temps de travail.

                                           Le problème, c'est que pour y gagner vraiment, en taille, en simplicité, et programmer proprement, il faudrait découper en fonctions. Qui n'ont pas été vues à ce point du cours semble-t-il. Ou alors ils n'ont pas été convaincants sur le fait qu'il fallait absolument découper, ne serait-ce que pour réutiliser. C'est ce qui arrive quand on suit un cours mal conçu, et que le correcteur amateur ne se donne pas la peine de tenir compte de ce qui a été vu ou pas.

                                           Un exemple, il pourrait y avoir une fonction qui

                                          • prend en parametre un message et 2 nombres min/max
                                          • affiche le message
                                          • lit 1 nombre
                                          • et si il n'est pas entre min et max, proteste et redemande

                                          Une autre pour "voulez vous rejouer ?"

                                          -
                                          Edité par michelbillaud 21 septembre 2017 à 14:45:56

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            21 septembre 2017 à 15:05:24

                                            Bonjours Ibrahim.

                                            Le principal défaut dans ton programme est à mon avis, sa structuration. Il est trop long avec beaucoup de répétitions et surtout sans commentaires, donc il est difficile à debugger.

                                            Je vous suggère d'abord de créer une fonction(void) pour tout groupe d'instructions qui se répète. Par exemple, dans ton script il y'a un bout de code répété 12 fois:

                                            printf("Souhaitez vous rejouer ?\n");
                                                    printf("1.Continuer 2 : Finire partie ?\n");
                                                    scanf("%d", &Yes);
                                                    printf("\n");

                                            On creer une routine (void function) pour ça.Ex:void Rester_Quitter(void) {....}
                                             

                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              21 septembre 2017 à 16:43:34

                                              Avant de "créer" - ou plutôt de l'écrire, restons modestes - il faut réfléchir.

                                              La question à se poser en premier : Si on définissait une fonction pour faire ça, comment voudrait-on l'employer  ?

                                              Personnellement, j'aimerais bien

                                              repeter 
                                                 faire une partie
                                              tantque le joueur veut continuer 
                                                  

                                              qui s'écrirait naturellement

                                              do {
                                                  ... le code pour
                                                  ... faire une partie
                                              } while ( le_joueur_veut_continuer() );
                                              


                                              Ce qui conduit au prototype

                                              bool le_joueur_veut_continuer ();
                                              

                                              (Oui, on a le droit de choisir des noms qui veulent dire quelque chose et sont faciles à comprendre. le_joueur_veut_continuer(), ça retourne true ou false, forcément).

                                              et au code

                                              bool le_joueur_veut_continuer()
                                              {
                                                 printf("voulez-vous...1=oui 2=non");
                                                 int reponse;
                                                 scanf("%d", & reponse);
                                                 return  reponse == 1;
                                              }

                                              (le "blindage" des entrées est laissé en exercice).



                                              -
                                              Edité par michelbillaud 21 septembre 2017 à 17:13:17

                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                21 septembre 2017 à 18:27:38

                                                Bonjour à tous mes amis ZEROS

                                                Arrivé au chapitre de la programmation modulaire, j'ai pu faire sortir toutes les fonctions (ou routines) du fichier principal "Main" sauf une ("void DevinerNombre(void)") que le compilateur "refuse de la voir" avec les autres dans le fichier "functions.c".

                                                Si la fonction reste dans le "Main" tout marche comme sur des roulettes (les roulettes des ZEROS bien entendu!:D

                                                J'ai essayé toute sorte de manipulations sensée et insensée mais en vain.

                                                Voici mes 3 fichiers(main.c, functions.c,functions.h)

                                                #include <stdio.h>
                                                #include <stdlib.h>
                                                #include <time.h>
                                                #include "functions.h"
                                                
                                                int modeJoueur;
                                                const int MIN = 1;
                                                int MAX;
                                                int nombreMystere = 0;
                                                int compteurDeCoups = 0;
                                                int nombreEntre = 0;
                                                int niveau;
                                                int play = 1;
                                                int Mode_menu_Flag = 0;             // Indicateur pour revenir au 1er MENU ou non.
                                                int rejouer;
                                                
                                                
                                                void DevinerNombre(void);           // Prototype
                                                
                                                void DevinerNombre(void) {          // Le jeu en lui-meme.
                                                
                                                    do {
                                                        printf("Quels et le nombre? ");
                                                        scanf("%d", &nombreEntre);
                                                        compteurDeCoups ++;                                     // Incrementation des coups
                                                        if (nombreEntre == nombreMystere) {
                                                            printf("Bravo! ");
                                                            printf("Vous l'avez trouve en %d coups\n\n",compteurDeCoups);
                                                            break;
                                                        }
                                                        else if (nombreEntre <  nombreMystere ) {
                                                            printf("c'est plus! \n");
                                                        }
                                                        else {
                                                            printf("C'est moins! \n");
                                                        }
                                                        printf("Il vous reste %d coups \n\n",10-compteurDeCoups);   // Les coups qui restent.   
                                                        if (compteurDeCoups == 10) {
                                                            printf("Vous avez perdu! \n");
                                                            printf("\n");
                                                            break;
                                                        }
                                                    } while(nombreEntre != nombreMystere && compteurDeCoups < 10);  // 
                                                }
                                                
                                                
                                                // ***********************  MAIN FUNCTION  **************************
                                                int main() {
                                                    welcome();              // 
                                                    srand(time(NULL));
                                                
                                                    while (play == 1) {
                                                        if (Mode_menu_Flag == 0) {
                                                            choose_Mode();
                                                            if (modeJoueur == 3) {      // Pour sortir du jeu.
                                                                play = 0;
                                                                break;
                                                            }
                                                            choose_Level();
                                                            Mode_menu_Flag = 1;          // pour ne pas retourner au menu "Mode joueur"
                                                        }
                                                        maximum(niveau);
                                                
                                                        switch (modeJoueur) {
                                                            case 1:
                                                                Mode_menu_Flag = 0;      // pour retourner au menu "Mode joueur"
                                                                do {
                                                                    nombreMystere = (rand()%(MAX - MIN + 1)) + MIN;     //nouveau chifre aleatoire
                                                                    compteurDeCoups = 0;
                                                                    //printf("Le nombre secret est %d  \n\n",nombreMystere);    // for debugging purpose.
                                                                    DevinerNombre();
                                                                    ResterPartir();
                                                                } while (rejouer);
                                                                break;
                                                
                                                            case 2:
                                                                Mode_menu_Flag = 0;
                                                                do {
                                                                    printf("Veuillez choisir un nombre entre 1 et %d JoueurZERO!\n",MAX);
                                                                    scanf("%d", &nombreMystere);
                                                                    system ("cls");
                                                                    compteurDeCoups = 0;
                                                
                                                                    if (nombreMystere > MAX) {
                                                                        printf("Erreur!!! ce nombre n'est pas valide.\n\n");
                                                                        break;
                                                                    }
                                                
                                                                    DevinerNombre();
                                                                    ResterPartir();
                                                                } while (rejouer);
                                                                break;
                                                
                                                            case 3:
                                                                play = 0;
                                                                break;
                                                
                                                            default:
                                                                Mode_menu_Flag = 0;
                                                                play = 1;
                                                                break;
                                                        }
                                                    }
                                                    return 0;
                                                }
                                                
                                                
                                                

                                                Fichier 2= functions.c:

                                                #include <stdio.h>      //For printf() here
                                                #include <stdlib.h>     //for using "system("cls");" here
                                                #include "functions.h"  //goes with fuctions.c
                                                #include <math.h>
                                                
                                                int MAX;
                                                int play;
                                                int niveau;
                                                int modeJoueur;
                                                int rejouer;
                                                
                                                
                                                int maximum(int niveau) {
                                                    switch (niveau) {
                                                        case 1:
                                                            MAX = 100; break;
                                                        case 2:
                                                            MAX = 500; break;
                                                        case 3:
                                                            MAX = 1000; break;
                                                    }
                                                    return MAX;
                                                }
                                                
                                                
                                                void welcome(void) {
                                                    printf("==== WELCOME TO PLUS OU MOINS ====\n\n");
                                                    printf("Taper 1 pour jouer \n");
                                                    printf("Taper 0 pour Quitter \n");
                                                    scanf("%d",&play);
                                                    printf("\n");
                                                }
                                                
                                                void choose_Level(void) {
                                                    printf("Veuillez choisir le niveau de difficulte.\n\n");
                                                    printf("1.Facile: 1 --> 100 \n");
                                                    printf("2.Moyen: 1 --> 500 \n");
                                                    printf("3.Difficile: 1 --> 1000 \n");
                                                    scanf("%d", &niveau);
                                                    //system("cls");
                                                    if ((niveau < 1)||(niveau > 3)) {
                                                        printf("Ce NIVEAU n'est PAS valide.\n");
                                                        niveau = 1;
                                                        printf("Par default ce sera le NIVEAU: %d. \n",niveau);
                                                    }
                                                    else {
                                                        printf("vous avez choisi le NIVEAU %d .\n",niveau);
                                                        printf("\n");
                                                    }
                                                }
                                                
                                                void choose_Mode(void) {
                                                    printf("*******  MENU JOUEUR  *******\n\n");
                                                    printf("1.Solo  2.Deux Joueurs  3.Quitter \n");
                                                    scanf("%d", &modeJoueur);
                                                    if ((modeJoueur < 1)||(modeJoueur > 3)) {
                                                        printf("Ce MODE n'est PAS valide.\n");
                                                        modeJoueur = 1;
                                                        printf("Par default ce sera le MODE: %d. \n",modeJoueur);
                                                    }
                                                
                                                }
                                                
                                                void ResterPartir(void) {
                                                    printf("Taper 1 pour: Rejouer. \n");
                                                    printf("Taper 0 pour: Changer ou Quitter \n");
                                                    scanf("%d", &rejouer);
                                                    system("cls");
                                                    if (rejouer) {
                                                        printf("Le NIVEAU est toujours %d ",niveau);
                                                    }
                                                    printf("\n");
                                                    if (!rejouer) {
                                                        printf("Merci d'avoir joue. A bientot! \n\n");
                                                    }
                                                }
                                                
                                                //void DevinerNombre(void) {
                                                //    do {
                                                //        printf("Quels et le nombre? ");
                                                //        scanf("%d", &nombreEntre);
                                                //        compteurDeCoups ++;
                                                //        if (nombreEntre == nombreMystere) {
                                                //            printf("Bravo! ");
                                                //            printf("Vous l'avez trouve en %d coups\n\n",compteurDeCoups);
                                                //            break;
                                                //        }
                                                //        else if (nombreEntre <  nombreMystere ) {
                                                //            printf("c'est plus! \n");
                                                //        }
                                                //        else {
                                                //            printf("C'est moins! \n");
                                                //        }
                                                //        printf("Il vous reste %d coups \n\n",10-compteurDeCoups);
                                                //        if (compteurDeCoups == 10) {
                                                //            printf("Vous avez perdu! \n");
                                                //            printf("\n");
                                                //            break;
                                                //        }
                                                //    } while(nombreEntre != nombreMystere && compteurDeCoups < 10);
                                                //}
                                                //
                                                
                                                
                                                

                                                Fichier 3= functions.h

                                                #ifndef FUNCTIONS_H_INCLUDED
                                                #define FUNCTIONS_H_INCLUDED
                                                
                                                
                                                int maximum(int niveau);
                                                void welcome(void);
                                                //void DevinerNombre(void);
                                                void choose_Level(void);
                                                void choose_Mode(void);
                                                void ResterPartir(void);
                                                
                                                #endif // FUNCTIONS_H_INCLUDED
                                                
                                                
                                                

                                                Merci d'avance pour votre aide.



                                                • Partager sur Facebook
                                                • Partager sur Twitter

                                                Amélioration Plus-ou-moin

                                                × 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