Partage
  • Partager sur Facebook
  • Partager sur Twitter

Plus ou moins

les variables booléennes

Sujet résolu
    14 avril 2006 à 0:28:35

    Bonsoir, je suis en train de m'initier au C et j'en profite pour dire que les cours sont vraiment très bien faits ! ;)
    J'ai juste un problème avec les variables booléennes, je suis en train d'essayer d'améliorer le jeu "Plus ou moins" en demandant au joueur s'il souhaite faire une nouvelle partie. Mateo conseille d'utiliser une variable booléenne mais je n'ai pas vraiment compris comment elle marchait. Si quelqu'un pouvait m'expliquer comment faire et m'éclairer sur ce type de variable, qui m'ont l'air vraiment importantes :euh: ...Merci beaucoup.

    Voici mon code actuel :
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>

    int main(int argc, char *argv[])
    {
        const long MAX=100, MIN=1;
        long nbre_mystere, nbre_player, compteur=0;

        srand(time(NULL));
        nbre_mystere = (rand() % (MAX - MIN + 1)) + MIN;

        do
        {
            printf("Quel est le nombre ?");
            scanf("%ld",&nbre_player);
            if(nbre_player<nbre_mystere)
            {
                printf("C'est plus !\n\n");
                compteur++;
            }
            else if(nbre_player>nbre_mystere)
            {
                printf("C'est moins !\n\n");
                compteur++;
            }
            else
            {
                compteur++;
                printf("Bravo vous avez trouve le nombre mystere en %ld coups!!\n\n",compteur);           
            }
        } while(nbre_player!=nbre_mystere);

        system("PAUSE");
        return 0;
    }

    • Partager sur Facebook
    • Partager sur Twitter
      14 avril 2006 à 1:40:13

      Les boolléennes sont en fait très simples! Elles valent 1 ou 0 ^^

      1 vaut true (vrai)
      0 vaut false (faux)

      Dans une condition, le if ne fait que tester si ce qui se trouve entre les paranthèses vaut 1 ou 0. Donc:

      int var = 0;
      if (var)
      {
      printf("Ça fonctionne");
      }
      else
      {
      printf("Ça ne fonctionne pas");
      }


      Ce petit code renvoie "Ça ne fonctionne pas". Par contre si tu aurrais initialiser var à 1, ça aurait renvoy. "Ça fonctionne".

      Alors pourquoi on utilise des signes comme ceci dans une codition (var==var2)? C'est que ce genre d'opération renvoi 1 si c'est vrai et 0 si ça ne l'est pas.

      Donc quand on te parle d'utiliser une variable booléenne, ça veut dire que si le joueur veux faire une nouvelle partie, la variable prend la valeur 1, sinon elle vaut 0.

      Voilà, aussi simple que ça!
      • Partager sur Facebook
      • Partager sur Twitter
        14 avril 2006 à 8:51:53

        :) OK merci pour le fonctionnement de la variable booléenne. Je crois que j'ai compris. Mais comment l'utilisateur peut-il changer son contenu ?
        Par exemple :
        Je veux afficher le message "Souhaitez-vous faire une nouvelle partie ?". Je vais initialiser ma variable rejouer=1. Mais s'il ne veut plus jouer, alors rejouer=0 mais comment passer de 1 à 0, c'est ça que je n'ai pas compris encore compris. :euh:
        • Partager sur Facebook
        • Partager sur Twitter
          14 avril 2006 à 9:42:53

          Citation : lolo_the_fripouille

          :) OK merci pour le fonctionnement de la variable booléenne. Je crois que j'ai compris. Mais comment l'utilisateur peut-il changer son contenu ?
          Par exemple :
          Je veux afficher le message "Souhaitez-vous faire une nouvelle partie ?". Je vais initialiser ma variable rejouer=1. Mais s'il ne veut plus jouer, alors rejouer=0 mais comment passer de 1 à 0, c'est ça que je n'ai pas compris encore compris. :euh:


          Il faut saisir la valeur avec par exemple fgets() et strtol()

          http://mapage.noos.fr/emdel/notes.htm#saisie
          http://mapage.noos.fr/emdel/notes.htm#fichiers

          N'accepter que 0 ou 1 (do-while...). Ensuite, on range la valeur dans la variable et on teste celle-ci. On agit ensuite en fonction de sa valeur (encore une fois, do-while...).
          • Partager sur Facebook
          • Partager sur Twitter
          Music only !
            14 avril 2006 à 10:20:10

            :euh:
            jsuis un petit débutant...
            donc fgets() me plait bien, cela me permetterait de demander à l'utilisateur de taper O (oui) ou N (non). S'il tape O, alors on recommencer, s'il tape N alors on arrete. Comment fait-on, avec fgets pour traduire cela ? Comment dire que la variable est égale au contenu de fgets() ?
            • Partager sur Facebook
            • Partager sur Twitter
              14 avril 2006 à 10:31:55

              Citation : lolo_the_fripouille

              fgets() me plait bien, cela me permetterait de demander à l'utilisateur de taper O (oui) ou N (non). S'il tape O, alors on recommencer, s'il tape N alors on arrete. Comment fait-on, avec fgets pour traduire cela ? Comment dire que la variable est égale au contenu de fgets() ?


              fgets() saisie une ligne et la stocke dans un tableau de char. Par exemple si on tape
              o<enter>, on récupère {'o', '\n', 0}, soit "o\n"

              Ensuite, soit on compare avec strcmp(), soit on compare directement le caractère qui nous interesse, et qui est en [0] de la ligne:

                char ligne [4];
                do
                {
                   /* ... */

                   printf ("continuer ? (o/n)\n");
                   fgets (ligne, sizeof ligne, stdin);
                }
                while(ligne[0] != 'n');

              • Partager sur Facebook
              • Partager sur Twitter
              Music only !
                14 avril 2006 à 12:16:49

                A ce niveau du cours c'est trop compliqué, il n'a pas appris à se servir des pointeurs et encore moins des tableaux.

                Le mieux serait d'oublier l'utilisation de lettres (tu l'apprendras plus tard, c'est plus compliqué). Récupère juste un nombre (0 ou 1) de la part de l'utilisation avec un scanf par exemple :

                int hcoix = 0;
                scanf("%ld", &choix);
                • Partager sur Facebook
                • Partager sur Twitter

                If you'd like to join us, read "How do we work at OpenClassrooms"! :)

                  14 avril 2006 à 15:36:26

                  Ok merci donc là le mieux c'est que je fasse :


                  long choix=1
                  printf("Voulez-vous continuer ? (Tapez 1 si oui, 0 si non)");
                  scanf("%ld",&choix);


                  C'est ainsi que tu préfères que je fasse M@teo21 ?
                  • Partager sur Facebook
                  • Partager sur Twitter
                    14 avril 2006 à 15:37:13

                    Exactement.
                    • Partager sur Facebook
                    • Partager sur Twitter

                    If you'd like to join us, read "How do we work at OpenClassrooms"! :)

                      14 avril 2006 à 18:19:14

                      -ed- : tu lui parles de la gestion des caractéres mais il n'a pas appris.

                      Je pense que une variable qui contient la lettres est un solution plus courte. On met une condition :
                      if (rejouerLettre == la valeur de n dans la table ascii)
                      recommencer == 0;

                      Un truc du genre ça devrait marcher non?
                      • Partager sur Facebook
                      • Partager sur Twitter

                      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