Partage
  • Partager sur Facebook
  • Partager sur Twitter

Petit problème

    23 février 2018 à 23:56:54

    Bonjour, je suis entrain d'essayer d'améliorer un programme que j'ai trouver dans une leçon en language mais je ne comprend les erreurs que j'ai commis; Voici le projet initiale ;

    #include <stdio.h>

    #include <stdlib.h>

    #include <time.h>

    int main ( int argc, char** argv )

    {

        int nombreMystere = 0, nombreEntre = 0;

        const int MAX = 100, MIN = 1;

        // Génération du nombre aléatoire

        srand(time(NULL));

        nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;

        /* La boucle du programme. Elle se répète tant que l'utilisateur n'a pas trouvé le nombre mystère */

        do

        {

            // On demande le nombre

            printf("Quel est le nombre ? ");

            scanf("%d", &nombreEntre);

            // On compare le nombre entré avec le nombre mystère

            if (nombreMystere > nombreEntre)

                printf("C'est plus !\n\n");

            else if (nombreMystere < nombreEntre)

                printf("C'est moins !\n\n");

            else

                printf ("Bravo, vous avez trouve le nombre mystere !!!\n\n");

        } while (nombreEntre != nombreMystere);

        return 0;

    }

    Puis j'ai essayer d'ajouter des niveaux et sa donner ca :  ( Désolée , je suis encore débutant dans le language C )

    #include <stdio.h>

    #include <stdlib.h>

    #include <time.h>

    int main ( int argc, char** argv )

    {

        int choix;

    printf("Bienvenue Dans mon programme \n");

    printf("-------- Choisissez le Niveau ---------\n\n");

    printf("1 .Niveau Debutant :100 - 1\n");

    printf("2 .Niveau Apprenti :1000 - 1\n");

    printf("3 .Niveau Expert   :10000 - 1\n");

    printf("Votre Choix :");

    scanf("%d",&choix);

    do

    {

    if(choix==1)

        {

            int nombreMystere = 0, nombreEntre = 0;

        int MAX = 100, MIN = 1;

        // Génération du nombre aléatoire

        srand(time(NULL));

        nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;

        do

        {

            printf("Quel est le nombre ? ");

            scanf("%d", &nombreEntre);

            if (nombreMystere > nombreEntre)

                printf("C'est plus !\n\n");

            else if (nombreMystere < nombreEntre)

                printf("C'est moins !\n\n");

            else

                printf ("Bravo, vous avez trouve le nombre mystere !!!\n\n");

        } while (nombreEntre != nombreMystere);

    }

        else if (choix=2)

        {

            int nombreMystere = 0, nombreEntre = 0;

        int MAX = 1000, MIN = 1;

        // Génération du nombre aléatoire

        srand(time(NULL));

        nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;

        do

        {

            printf("Quel est le nombre ? ");

            scanf("%d", &nombreEntre);

            if (nombreMystere > nombreEntre)

                printf("C'est plus !\n\n");

            else if (nombreMystere < nombreEntre)

                printf("C'est moins !\n\n");

            else

                printf ("Bravo, vous avez trouve le nombre mystere !!!\n\n");

        } while (nombreEntre != nombreMystere);

        }

    else if (choix=3)

    {

        int nombreMystere = 0, nombreEntre = 0;

         int MAX = 10000, MIN = 1;

        srand(time(NULL));

        nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;

        do

        {

            printf("Quel est le nombre ? ");

            scanf("%d", &nombreEntre);

            if (nombreMystere > nombreEntre)

                printf("C'est plus !\n\n");

            else if (nombreMystere < nombreEntre)

                printf("C'est moins !\n\n");

            else

                printf ("Bravo, vous avez trouve le nombre mystere !!!\n\n");

        } while (nombreEntre != nombreMystere);

    return 0;

    }

    • Partager sur Facebook
    • Partager sur Twitter
      24 février 2018 à 0:23:37

      Je comprends pas vraiment quel est ton problème... J'ai regardé la première partie de ton programme et il me semble bon ! Si tu veux j'ai effectué quelques modifs pour que le code soit plus clair et plus correct syntaxiquement parlant (voir ci dessous)

      Alors déjà les constantes on les déclare juste après les include avec la balise "define" suivit du nom de la variable et de sa valeur

      Après, tu peux utiliser uniquement un while dans ce cas là ( le do ... while va entrer au moins une fois dans la boucle alors que le while n'y rentre pas si la condition de départ n'est pas repectée)

      Pour la deuxième partie du code, je te conseille d'utiliser des switch ... case au lieu des if c'est plus joli ! Évite aussi de faire un maximum de while, ça utilise beaucoup de ressources de ton ordi pour rien :)

      Pour la partie
      "printf("Quel est le nombre ? ");
              scanf("%d", &nombreEntre);
              if (nombreMystere > nombreEntre)
                  printf("C'est plus !\n\n");
              else if (nombreMystere < nombreEntre)
                  printf("C'est moins !\n\n");
             else
                  printf ("Bravo, vous avez trouve le nombre mystere !!!\n\n");"

      tu la réutilises souvent, donc je te conseille d'en faire une fonction que tu appelle ensuite dans ton switch case 

      #include <stdio.h>
      #include <stdlib.h>
      #include <time.h>
      #define MAX 100
      #define MIN 1
      
      int main ( int argc, char** argv )
      
      {
      
          int nombreMystere; 
          int nombreEntre = 0;
      
      
          // Génération du nombre aléatoire
      srand(time(NULL));
          nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
          printf("AFFICHAGE POUR PROGRAMMEUR \nLe nombre Mystère est : %d\n",nombreMystere);
      
          /* La boucle du programme. Elle se répète tant que l'utilisateur n'a pas trouvé le nombre mystère */
              // On demande le nombre
              while (nombreEntre != nombreMystere){
          
                  printf("Quel est le nombre ? ");
                  scanf("%d",&nombreEntre);
                      // On compare le nombre entré avec le nombre mystère
                      if (nombreMystere > nombreEntre)
                          printf("C'est plus !\n\n");
                      else if (nombreMystere < nombreEntre)
                          printf("C'est moins !\n\n");
                      else
                          printf ("Bravo, vous avez trouve le nombre mystere !!!\n\n");
      
          } 
      
          return 0;
      
      }



      • Partager sur Facebook
      • Partager sur Twitter
        24 février 2018 à 0:33:29

        Daccord, merci de ton aide :)

        Juste une dernière question: quel mon problème dans la ligne 89 la dernière ;
        ||=== Build: Debug in KhalilProgramme (compiler: GNU GCC Compiler) ===|
        C:\Users\LENOVO\Documents\KhalilProgramme\main.c||In function 'main':|
        C:\Users\LENOVO\Documents\KhalilProgramme\main.c|43|warning: suggest parentheses around assignment used as truth value [-Wparentheses]|
        C:\Users\LENOVO\Documents\KhalilProgramme\main.c|67|warning: suggest parentheses around assignment used as truth value [-Wparentheses]|
        C:\Users\LENOVO\Documents\KhalilProgramme\main.c|89|error: expected declaration or statement at end of input|
        C:\Users\LENOVO\Documents\KhalilProgramme\main.c|89|error: expected declaration or statement at end of input|
        ||=== Build failed: 2 error(s), 2 warning(s) (0 minute(s), 0 second(s)) ===|

        -
        Edité par CopMenstop 24 février 2018 à 0:58:53

        • Partager sur Facebook
        • Partager sur Twitter
          27 février 2018 à 10:44:18

          Bonjour,

          Je n'en suis pas certain, mais il me semble qu'il manque 2 accolades fermantes en fin de code. Ce qui expliquerait ton message d'erreur. La prochaine fois utilise le petit bouton "</>" pour insérer du code, ce sera plus lisible.

          Tu peux encore améliorer ton code. Je t'ai fais une petite liste, du plus important au moins important :

          • La fonction `srand` ne doit être effectuée qu'une seule et unique fois dans tout le code. Mets la une fois au début de main, avant le premier `do..while`, et c'est tout.
          • Tu as 3 fois le même code copié-collé pour chaque niveau. La seule chose qui change est `MAX`. Tu peux garder tes `if..else if..` mais juste pour modifier MAX. Et après, en dehors de ces if, mettre le do while  qui permet de chercher le nombre.
          • Si jamais l'utilisateur rentre "-45678" comme choix de niveau, que se passe-t-il ? Tu devrais mettre ton menu dans un nouveau do while qui vérifie si l'utilisateur ne rentre pas n'importe quoi. En plus, ça pourra aussi te permettre de rajouter une option "rejouer ou quitter" si tu te sens de la faire.
          • Les variables écrites en majuscules sont, par convention, des constantes. Donc tu devrais écrire `int max`et `int min` en minuscules, car se ne sont pas des constantes.

          Voilà, en espérant que ce ne soit pas trop d'un coup ^^

          -
          Edité par Insonore 27 février 2018 à 16:09:36

          • Partager sur Facebook
          • Partager sur Twitter
          Hugo
            27 février 2018 à 15:57:22

            Salut,

            Tout d'abord, pour la deuxième partie tu as oublié la condition while avant le return (vers la fin): un do sans while ça marche moyen :(

            Ensuite, tu as commis l'erreur ultra courante: dans les boucles if et else if tu as mis "choix =" au lieu de "choix ==" : le '=' c'est une affectation, tandis que le "==" c'est une comparaison. Mais t'inquiètes pas tout le monde fait ça au début.

            Puis en effet comme Insonore l'a remarqué, tu as oublié 1 ou 2 accolades à la fin.

            Je me suis permis de remettre un peu en état ton code en laissant le while vide pour que tu puisses rajouter des modifs toi-même

            #include <stdio.h>
            
            #include <stdlib.h>
            
            #include <time.h>
            
            int main ( int argc, char** argv ){
            
                int choix;
            
            	printf("Bienvenue Dans mon programme \n");
            
            	printf("-------- Choisissez le Niveau ---------\n\n");
            
            	printf("1 .Niveau Debutant :100 - 1\n");
            
            	printf("2 .Niveau Apprenti :1000 - 2\n");
            
            	printf("3 .Niveau Expert   :10000 - 3\n");
            
            	printf("Votre Choix :");
            
            	scanf("%d",&choix);
            
            	do{
            		if(choix==1){
            			int nombreMystere = 0, nombreEntre = 0;
            
                		int MAX = 100, MIN = 1;
            
                	// Génération du nombre aléatoire
            
                		srand(time(NULL));
            
                		nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
            
                		do{
            
                    		printf("Quel est le nombre ? ");
            
                    		scanf("%d", &nombreEntre);
            
                    		if (nombreMystere > nombreEntre)
            
                        		printf("C'est plus !\n\n");
            
                    		else if (nombreMystere < nombreEntre)
            
                        		printf("C'est moins !\n\n");
            
                    		else
            
                        		printf ("Bravo, vous avez trouve le nombre mystere !!!\n\n");
            
                		} while (nombreEntre != nombreMystere);
                	}
            
                	else if (choix==2){
            
                    	int nombreMystere = 0, nombreEntre = 0;
            
                		int MAX = 1000, MIN = 1;
            
                		// Génération du nombre aléatoire
            
                		srand(time(NULL));
            
                		nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
            
                		do{
            
                    		printf("Quel est le nombre ? ");
            
                    		scanf("%d", &nombreEntre);
            
                    		if (nombreMystere > nombreEntre)
            
                        		printf("C'est plus !\n\n");
            
                    		else if (nombreMystere < nombreEntre)
            
                        		printf("C'est moins !\n\n");
            
                    		else
            
                        		printf ("Bravo, vous avez trouve le nombre mystere !!!\n\n");
            
                		} while (nombreEntre != nombreMystere);
            
                	}
            
            		else if (choix==3){
            
                		int nombreMystere = 0, nombreEntre = 0;
            
                 		int MAX = 10000, MIN = 1;
            
                		srand(time(NULL));
            
                		nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
            
                		do{
                			printf("Quel est le nombre ? ");
            
                    		scanf("%d", &nombreEntre);
            
                    		if (nombreMystere > nombreEntre)
            
                        		printf("C'est plus !\n\n");
            
                    		else if (nombreMystere < nombreEntre)
            
                        		printf("C'est moins !\n\n");
            
                    		else
            
                        		printf ("Bravo, vous avez trouve le nombre mystere !!!\n\n");
            
                		} while (nombreEntre != nombreMystere);
                	}
            
                	else{
                		printf("Erreur lors de la Saisie\n");
                	}
            
                }while(); //
            
            	return 0;
            
            }


            Je t'ai aussi rajouté une codition else à toi de modifier son contenu comme bon te semble

            • Partager sur Facebook
            • Partager sur Twitter

            Petit problème

            × 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