Partage
  • Partager sur Facebook
  • Partager sur Twitter

Plus ou Moins...

Sujet résolu
    14 août 2008 à 1:06:27

    Re bonjour :'(

    Je suis désolé de devoir recrée un topic, mais j'ai encre une fois de plus besoin d'aide...

    J'ai fait mon programme "Plus ou Moins" pour qu'il nous dise en combien de coup l'on a gagné, et pour qu'il nous demande si l'on veut rejouer.

    Voici le programme :

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    int main(int argc, char *argv[])
    {
    
        long partie = 0;
        const long MAX = 100;
        const long MIN = 1;
        long nombreMystere = 0;
        long resultat = 0;
        long compteur = 0;
        
        srand(time(NULL));
        do
        {
        nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
        
        printf("===PLUS ou MOINS===\n\n\n");
        printf("PLUS ou MOINS est un jeu tres simple ! En effet, l'ordinateur choisit un nombre mystere comprit entre 1 et 100 aleatoirement. Le but de ce jeu etant donc de trouver ce nombre mystere ! Compris ? Alors on peut commancer !\n\n\n");
        do
        {
                   printf("Alors... Selon vous, quel est le nombre mystere ? ");
                   scanf("%ld", &resultat);
                   printf("\n\n");
                   compteur++;
                   
                   if (nombreMystere == resultat)
                   {
                        printf("Bravo, vous avez trouve le nombre mystere en %ld coups !!!\n\n\n", compteur);
                        printf("Souhaitez-vous rejouer ? Tapez 1 pour oui, ou 0 pour non : ");
                        scanf("%ld", &partie);
                        printf("\n\n");
                   }
                   else if (resultat > nombreMystere)
                   {
                        printf("C'est moins !\n");
                   }
                   else
                   {
                        printf("C'est plus !\n");
                   }
                   
        }
        while (resultat != nombreMystere);
        
        }
        while (partie == 1);
      
      system("PAUSE");	
      return 0;
    }
    


    Celui-ci est fonctionnel...
    Mais maintenant, je cherche encore à le modifier, pour faire en sorte d'avoir plusieurs niveau de difficulté, et en choissisant le niveau de difficulté avec un menu... Et c'est là que je bloque :(

    Voici le code :

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    int main(int argc, char *argv[])
    {
    
        srand(time(NULL));
        long partie = 0;
        long MAX = 0;
        const long MIN = 1;
        long nombreMystere = 0;
        long resultat = 0;
        long compteur = 0;
        long difficulte = 0;
        
        srand(time(NULL));
        do
        {
        printf("Veuillez choisir un niveau de difficulte:\n\n\n1. Facile\n2.Moyen\n3.Difficile\n\n");
        scanf("%ld", difficulte);
        if(difficulte == 1)
        {
            MAX += 100;
        }
        else if(difficulte == 2)
        {
            MAX += 1000;
        }
        else
        {
            MAX += 10000;
        }
        nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
        
        printf("===PLUS ou MOINS===\n\n\n");
        printf("PLUS ou MOINS est un jeu tres simple ! En effet, l'ordinateur choisit un nombre mystere comprit entre 1 et 100 aleatoirement. Le but de ce jeu etant donc de trouver ce nombre mystere ! Compris ? Alors on peut commancer !\n\n\n");
        do
        {
                   printf("Alors... Selon vous, quel est le nombre mystere ? ");
                   scanf("%ld", &resultat);
                   printf("\n\n");
                   compteur++;
                   
                   if (nombreMystere == resultat)
                   {
                        printf("Bravo, vous avez trouve le nombre mystere en %ld coups !!!\n\n\n", compteur);
                        printf("Souhaitez-vous rejouer ? Tapez 1 pour oui, ou 0 pour non : ");
                        scanf("%ld", &partie);
                        printf("\n\n");
                   }
                   else if (resultat > nombreMystere)
                   {
                        printf("C'est moins !\n");
                   }
                   else
                   {
                        printf("C'est plus !\n");
                   }
                   
        }
        while (resultat != nombreMystere);
        
        }
        while (partie == 1);
      
      system("PAUSE");	
      return 0;
    }
    


    Si vous pouviez m'aidez à trouver mon erreur et à m'aider à la résoudre une fois de plus, sa serait bien gentil ^^
    • Partager sur Facebook
    • Partager sur Twitter
      14 août 2008 à 1:23:17

      Citation : jojo130194

      Si vous pouviez m'aidez à trouver mon erreur et à m'aider à la résoudre une fois de plus, sa serait bien gentil ^^


      Déjà, ça :
      -------------- Build: Debug in hello ---------------
      
      Compiling: main.c
      C:\dev\hello\main.c: In function `main':
      C:\dev\hello\main.c:21: warning: format argument is not a pointer (arg 2)
      C:\dev\hello\main.c: At top level:
      C:\dev\hello\main.c:5: warning: unused parameter 'argc'
      C:\dev\hello\main.c:5: warning: unused parameter 'argv'
      Linking console executable: bin\Debug\hello.exe
      Output size is 21.57 KB
      Process terminated with status 0 (0 minutes, 0 seconds)
      0 errors, 3 warnings

      Ceci
      if (difficulte == 1)
            {
               MAX += 100;
            }
            else if (difficulte == 2)
            {
               MAX += 1000;
            }
            else
            {
               MAX += 10000;
            }
      

      N'a aucun sens. pourquoi un cumul ? un simple afectation directe suffit. Pourquoi aller chercher une complication inutile ? Il faut rs=eseter le plus simple et direct possible :
      if (difficulte == 1)
            {
               MAX = 100;
            }
            else if (difficulte == 2)
            {
               MAX = 1000;
            }
            else
            {
               MAX = 10000;
            }
      

      et utilise plutôt un switch-case qui est fait pour ça...

      Tu appelle srand() 2 fois. Pourquoi ?

      Exécution : si je choisis 2, pourquoi on affiche "... entre 1 et 100" ? Tu trouves ça logique ?
      • Partager sur Facebook
      • Partager sur Twitter
      Music only !
        14 août 2008 à 1:42:49

        Merci de ta réponse :) Mais j'avoue que je ne comprends pas tout... J'ai modifié quelques trucs comme le switch, ou bien le srand qui était écrit 2 fois, mais ça ne fonctionne toujours pas...

        Voici le nouveau code, toujours infonctionnel :

        #include <stdio.h>
        #include <stdlib.h>
        #include <time.h>
        
        int main(int argc, char *argv[]) 
        {
        
            long partie = 0;
            long MAX = 0;
            const long MIN = 1;
            long nombreMystere = 0;
            long resultat = 0;
            long compteur = 0;
            long difficulte = 0;
            
            srand(time(NULL));
            do
            {
            printf("Veuillez choisir un niveau de difficulte:\n\n\n1. Facile\n2.Moyen\n3.Difficile\n\n");
            scanf("%ld", difficulte);
            switch (difficulte)
            {
                case1:
                      MAX = 100;
                      break;
                case2:
                      MAX=1000;
                      break;
                case3:
                      MAX=10000;
                      break;
            }
            nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
            
            printf("===PLUS ou MOINS===\n\n\n");
            printf("PLUS ou MOINS est un jeu tres simple ! En effet, l'ordinateur choisit un nombre mystere comprit entre 1 et 100 aleatoirement. Le but de ce jeu etant donc de trouver ce nombre mystere ! Compris ? Alors on peut commancer !\n\n\n");
            do
            {
                       printf("Alors... Selon vous, quel est le nombre mystere ? ");
                       scanf("%ld", &resultat);
                       printf("\n\n");
                       compteur++;
                       
                       if (nombreMystere == resultat)
                       {
                            printf("Bravo, vous avez trouve le nombre mystere en %ld coups !!!\n\n\n", compteur);
                            printf("Souhaitez-vous rejouer ? Tapez 1 pour oui, ou 0 pour non : ");
                            scanf("%ld", &partie);
                            printf("\n\n");
                       }
                       else if (resultat > nombreMystere)
                       {
                            printf("C'est moins !\n");
                       }
                       else
                       {
                            printf("C'est plus !\n");
                       }
                       
            }
            while (resultat != nombreMystere);
            
            }
            while (partie == 1);
          
          system("PAUSE");	
          return 0;
        }
        


        D'où pourrait venir le problème ? ( Certes, il doit y en avoir beaucoup :( )
        Merci d'avance :-°
        • Partager sur Facebook
        • Partager sur Twitter
          14 août 2008 à 1:50:22

          Citation : jojo130194

          Merci de ta réponse :) Mais j'avoue que je ne comprends pas tout...

          Qu'est-ce que tu ne comprends pas ? On doit deviner ?

          Citation : Pas de titre

          Voici le nouveau code, toujours infonctionnel :


          Comme déjà signalé (messages du compilateur), ceci est faux:
          scanf("%ld", difficulte);
          

          scanf() attend une adresse...

          Corrigé...
          #include <stdio.h>
          #include <stdlib.h>
          #include <time.h>
          
          int main (void)
          {
             long partie = 0;
             long MAX = 0;
             const long MIN = 1;
             long nombreMystere = 0;
             long resultat = 0;
             long compteur = 0;
             long difficulte = 0;
          
             srand (time (NULL));
             do
             {
                printf
                   ("Veuillez choisir un niveau de difficulte:\n\n\n" "1. Facile\n"
                    "2.Moyen\n" "3.Difficile\n\n");
                scanf ("%ld", &difficulte);
                if (difficulte == 1)
                {
                   MAX = 100;
                }
                else if (difficulte == 2)
                {
                   MAX = 1000;
                }
                else
                {
                   MAX = 10000;
                }
                nombreMystere = (rand () % (MAX - MIN + 1)) + MIN;
          
                printf ("===PLUS ou MOINS===\n\n\n");
                printf
                   ("PLUS ou MOINS est un jeu tres simple !\n"
                    "En effet, l'ordinateur choisit un nombre mystere compris entre 1 et %ld\n"
                    "aleatoirement. Le but de ce jeu etant donc de trouver ce nombre mystere !\n"
                    "Compris ? Alors on peut commencer !\n\n\n", MAX);
                do
                {
                   printf ("Alors... Selon vous, quel est le nombre mystere ? ");
                   scanf ("%ld", &resultat);
                   printf ("\n\n");
                   compteur++;
          
                   if (nombreMystere == resultat)
                   {
                      printf
                         ("Bravo, vous avez trouve le nombre mystere en %ld coups !!!\n\n\n",
                          compteur);
                      printf
                         ("Souhaitez-vous rejouer ? Tapez 1 pour oui, ou 0 pour non : ");
                      scanf ("%ld", &partie);
                      printf ("\n\n");
                   }
                   else if (resultat > nombreMystere)
                   {
                      printf ("C'est moins !\n");
                   }
                   else
                   {
                      printf ("C'est plus !\n");
                   }
          
                }
                while (resultat != nombreMystere);
          
             }
             while (partie == 1);
          
             system ("PAUSE");
             return 0;
          }
          
          • Partager sur Facebook
          • Partager sur Twitter
          Music only !
            14 août 2008 à 2:02:29

            Eh bien je ne voyais pas trop de quoi tu voulais parler dans le passage du
            Exécution : si je choisis 2, pourquoi on affiche "... entre 1 et 100" ? Tu trouves ça logique ?

            Mais maintenant ce point est éclairci :)
            Merci encore !
            Par contre, j'aimerais avoir quelque "renseignements" sur :
            int main (void)
            

            En effet, je ne suis qu'à la fin de la 1ere partie du tutorial, aux fonctions, et je n'ai vu pour l'instant que des
            int main(int argc, char *argv[])
            

            Je voudrais savoir à quoi cela correspond, et quelle est la différence entre les 2 SVP :p
            Merci d'avance, et encore merci pour la solution :)
            • Partager sur Facebook
            • Partager sur Twitter
              14 août 2008 à 2:15:03

              Citation : jojo130194

              Par contre, j'aimerais avoir quelque "renseignements" sur :

              int main (void)
              


              En effet, je ne suis qu'à la fin de la 1ere partie du tutorial, aux fonctions, et je n'ai vu pour l'instant que des

              int main(int argc, char *argv[])
              


              Je voudrais savoir à quoi cela correspond, et quelle est la différence entre les 2 SVP :p
              Merci d'avance, et encore merci pour la solution :)



              http://mapage.noos.fr/emdel/notes.htm#typemain
              • Partager sur Facebook
              • Partager sur Twitter
              Music only !
                14 août 2008 à 23:44:50

                Citation : Pas de titre

                </citation>Bonjour,
                je ne sais pas pourquoi mon programme ne marche or il est comme votre reponse.Et en plus j'ai fait un copier colé de votre reponse et ça aussi ne marche pas .
                voici mon programme et ce qu'il affiche comme eureur.
                Merci de bien vouloir m'aider

                <position valeur="justifie"></position>

                </code>//j'ai essayé avec 3 niveau "facile,moyen,dificile
                #include<stdio.h>
                #include<stdlib.h>
                #include<time.h>
                int main(int argc,char**argv)
                {	
                	long nombreMystere=0,nombreEntre=0,compteur,choix=0,MAX=0;//declaration des nombre
                	const MIN=1;
                
                //genration du nombre aleatoire
                	srand(time(NULL));
                	nombreMystere=(rand()%(MAX-MIN+1))+MIN;
                	
                	//affiche du menu
                	
                	
                		printf("===choix du niveau===");
                		printf("1.facile");
                		printf("2.moyen");
                		printf("3.dificile");
                		printf("votre choix?:");
                		scanf("%dl",&choix);
                		
                	//excution du choix avec switch 	
                			switch(choix)
                			{
                				case 1://pour chaque cas les condition du niveau sont redefinie
                				long MAX=100;
                				
                				break;
                				case 2:
                				long MAX=1000;
                				break;
                				case 3:
                				long MAX=10000;
                				break;
                			}
                			nombremystere=(rand()%(MAX-MIN+1))+MIN;
                	do
                	{
                			printf("Bien venue ,vous avez choisie le niveau %dl \n",choix);
                			printf("quel est votre nombre?:");
                			scanf("%ld" ,& nombreEntre);
                			compteur++;	
                		if(nombreMystere>nombreEntre)
                			printf("c'est plus!!\n");
                		else if (nombreMystere<nombreEntre)
                			printf("c'est moins\n");
                		else
                			
                			printf("bravo vous avez trouvé");
                			
                	}while(nombreMystere=nombreEntre);
                	
                	system("pause");
                
                <code type="bash">
                


                : error C2143: erreur de syntaxe : absence de ';' avant 'type'
                <citation nom="Pas de titre">

                merci encore pour tout l'aide que vous nous apportez.
                • Partager sur Facebook
                • Partager sur Twitter
                  15 août 2008 à 0:44:07

                  Citation : aguisse5

                  Bonjour,
                  je ne sais pas pourquoi mon programme ne marche or il est comme votre reponse.

                  switch(choix)
                  			{
                  				case 1://pour chaque cas les condition du niveau sont redefinie
                  				long MAX=100;
                  				
                  				break;
                  



                  Ce n'est pas du tout "comme ma réponse". Je n'ai pas mis 'long'...

                  Quand au copié/collé de mon corrigé, il donne :
                  -------------- Build: Debug in hello ---------------
                  
                  Compiling: main.c
                  Linking console executable: bin\Debug\hello.exe
                  Output size is 21.57 KB
                  Process terminated with status 0 (0 minutes, 0 seconds)
                  0 errors, 0 warnings

                  et il fonctionne...

                  Essaye de te relire avant de poster, tu faites des fautes de frappes épouvantables qui nuisent à la compréhension de tes propos... Tu peux même corriger ce que tu as posté avec Image utilisateur

                  Enfin évite de mettre n'importe quelles balises dans ton message, ça devient illisible...
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Music only !

                  Plus ou Moins...

                  × 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