Partage
  • Partager sur Facebook
  • Partager sur Twitter

[TP 1] Erreur dans mon compteur

    22 décembre 2005 à 17:59:13

    Bonjour!
    J'ai un problème avec mon compteur. Dev me met qu'il y aune erreur lorsque je veux l'afficher! Que faire?



        long nombrecherche = 0, nombredit = 0;
        const long MAX = 100, MIN = 0;
        long compteur = 1;
       
        srand(time(NULL));
        nombrecherche = (rand() % (MAX - MIN + 1)) + MIN;
       
        do
        {
        printf ("Quel nombre proposez-vous? ");
        scanf (" %ld", &nombredit);
       
        if (nombredit > nombrecherche)
        printf ("Le nombre recherche est plus petit que %ld\n\n", nombredit);
        compteur = compteur++;
       
        else if (nombredit < nombrecherche)
        printf ("Le nombre recherche est plus grand que %ld\n\n", nombredit);
        compteur = compteur++;
       
        else
        printf ("Bravo! Vous etes tombe sur le bon numero! Le chiffre a trouve etait\n belle et bien %ld!\n Vous avez reussi en %id coups!", nombredit, compteur);
       
        }
        while (nombredit != nombrecherche);
    • Partager sur Facebook
    • Partager sur Twitter
      22 décembre 2005 à 18:07:45

      je comprend pas ce que tu veux faire
      :-°
      tu veux faire un compteur de coup??
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        22 décembre 2005 à 18:07:57

        %id <- c'est pas ça ? Tu voulais pas mettre %ld plutôt ?
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          22 décembre 2005 à 18:08:06

          compteur = compteur++;
          Ca n'existe pas ça. ++ incrémente directement un nombre et ne retourne rien. On a trois possibilités qui reviennent au même :
          compteur++;
          compteur = compteur + 1;
          compteur += 1;

          Ensuite tu as oublié les { } qui encadrent le bloc d'instructions exécuté si les conditions sont vraies, donc mets un { après le if qui se ferme avant le else if puis après t'en rouvres un autre...

          ;)

          edit : et la remarque de Bigloo est juste.
          • Partager sur Facebook
          • Partager sur Twitter
            22 décembre 2005 à 18:09:16

            Plusieurs choses à corriger :
            - "compteur = compteur++;" se dit "compteur++;"
            - il faut encadrer les instructions après les "if" par des accolades :
            if (nombredit > nombrecherche)
            {
                printf ("Le nombre recherche est plus petit que %ld\n\n", nombredit);
                compteur = compteur++;
            }

            - il faut demander au joueur s'il souhaite continuer car sinon la boucle prend fin dès qu'il trouve la solution et le joueur n'a pas le temps de lire le texte de fin
            - autant incrémenter le compteur à chaque fin de boucle plutôt que de le faire à chaque "if" "esle if"

            EDIT >> grilled...
            • Partager sur Facebook
            • Partager sur Twitter
              22 décembre 2005 à 19:35:49

              Se serait encore mieux si tu mettais 0 au nombre de coups et incrémenter le nombre de coups au début du while, comme ça, si tu veux remanier le nombre de coups après, tu ne l'auras pas rincrémenter (je viens d'inventer un nouveau mot :p )
              par exemple, j'ai fait un système de point qui donne :

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

              int main(int argc, char *argv[])
              {
                long choixRecommencer = 1;
                while (choixRecommencer == 1)
                {
                 long nombreEntre = 101;
                 long nombreMystere = 0;
                 long nombreCoups = 1;
                 long nbrJoueurs = 1;
                 printf("=====Menu=====\n\nA quel mode voulez-vous jouer ?\n\n1. 1 joueur\n2. 2 joueurs\n3. mode d'emploi\n");
                 scanf("%ld", &nbrJoueurs);
                 if (nbrJoueurs == 1)
                 {
                  const long MIN = 1;
                   long MAX = 100;
                   long niveau = 1;
                   printf("=====Menu 1 joueur=====\n\nA quel niveau voulez-vous jouez ?\n\n1. niveau 1 (max : 100)\n2. niveau 2 (max : 500)\n3. niveau 3 (max : 1000)\n");
                   scanf ("%ld", &niveau);
                   switch (niveau)
                   {
                          case 1:
                               MAX = 100;
                               break;
                          case 2:
                               MAX = 500;
                               break;
                          case 3:
                               MAX = 1000;
                               break;
                          default:
                               printf("ce niveau n'existe pas, nous vous mettons au niveau 1");
                               break;
                   }
                   printf("\n");
                   srand(time(NULL));
                   nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
                   while (nombreEntre != nombreMystere)
                   {
                       nombreCoups++;
                       printf("Quel est le nombre ? ");
                       scanf("%ld", &nombreEntre);
                       printf("\n");
                       if (nombreEntre < nombreMystere)
                               {
                                              printf("C'est plus !\n\n");
                               }
                       else if (nombreEntre > nombreMystere)
                               {
                                              printf("C'est moins !\n\n");
                               }
                       else
                               {
                                              printf("Bravo, vous avez trouve le nombre mystere en %d coups \n", nombreCoups);
                               }
                   }
                   long score = nombreCoups / niveau;
                   printf("Voici votre score : %d \n", score);
                   printf("\nVoulez-vous rejouer une partie ?\n\n1. Oui\n2. Non\n");
                  }
                  else if (nbrJoueurs ==2)
                  {
                     printf("joueur 1, intruduisez un nombre entre 1 et le maximum convenu avec joueur 2. ");
                     scanf("%ld", &nombreMystere);
                     printf("\n\n*\n\n*\n\n*\n\n*\n\n*\n\n*\n\n*\n\n*\n\n*\n\n*\n\n*\n\n*\n\n*\n\n*\n\n*Joueur 2, a vous de jouer !");
                     while (nombreEntre != nombreMystere)
                     {
                       nombreCoups++;
                       printf("Quel est le nombre ? ");
                       scanf("%ld", &nombreEntre);
                       printf("\n");
                       if (nombreEntre < nombreMystere)
                               {
                                              printf("C'est plus !\n\n");
                               }
                       else if (nombreEntre > nombreMystere)
                               {
                                              printf("C'est moins !\n\n");
                               }
                       else
                               {
                                              printf("Bravo, vous avez trouve le nombre mystere en %d coups \n", nombreCoups);
                               }
                     }
                     printf("\nVoulez-vous rejouer une partie ?\n\n1. Oui\n2. Non\n");
                  }
                  else if (nbrJoueurs == 3)
                  {
                       printf("=====Mode d'emploi=====\n\n1 joueur :\nDans ce jeu, l'ordinateur choisit un nombre au hazard en fonction du niveau choisi. Vous devez ensuite taper un nombre. L'ordinateur vous dira si le nombre mystere est plus grand ou plus petit que le votre. Si il est egal, vous avez gagne ! Apres plusieurs parties, le but est d'avoir totalise le moins de points.\n\n2 joueurs :\nLes 2 joueurs definissent un palier maximum, le premier tape un nombre entre 1 et le palier maximum. Le deuxieme doit ensuite faire comme pour 1 joueur. Apres chaque partie, echangez les roles. Au bout de plusieurs parties, le vainqueur est celui qui a totalise le moins de point.\n");
                       system("pause");
                       printf("\n\nVoulez-vous commencer une partie ?\n\n1. Oui\n2. Non\n");
                  }
                  else
                  {
                    printf("Desole, ce choix n'est pas dans le menu\n\nVoulez-vous retourner au menu ?\n\n1. Oui\n2. Non\n");
                  }
                scanf("%ld", &choixRecommencer);
                }
                printf("Au revoir, et a bientot !\n       (c) Pierre Vyncke\n"); { ^^ }
                system("PAUSE");     
                return 0;
              }
              • Partager sur Facebook
              • Partager sur Twitter

              [TP 1] Erreur dans mon compteur

              × 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