Partage
  • Partager sur Facebook
  • Partager sur Twitter

Nombre d'essais dans une boucle + message.

    25 mai 2017 à 16:09:52

    Bonjour !

    Je suis en train de faire l'activité 1 d'apprendre à coder en js où il faut deviner un nombre choisi par l'ordinateur en 6 essais. Je pensais avoir trouvé la solution à l'activité sauf que j'ai un souci quand je trouve le nombre lors du dernier essai, ça ne m'affiche pas de message. J'ai essayé beaucoup de choses mais sans succès ... En fait j'ai trouvé que l'erreur venait du fait qu'au 6ème essai, ça revenait à "for" et ça saute ce qu'il y a d'écrit après. Mais ça m'a pas avancé pour autant...

    J'ai rajouté un "if / else" à la fin pour prendre en compte ce 6ème essai, mais le message s'affiche donc deux fois si on a trouvé la solution avant le 6ème essai. Ce qui me chagrine fortement, comme vous l'imaginez. 

    Par ailleurs, est-ce qu'il y a un moyen pour incorporer la variable nombreChoisi dans la boucle histoire que ça fasse plus propre, et de ce fait écrire i = 6 au lieu de i <= 5 ? Merci :)

    Mon code est certainement pas terrible, mais c'est mes débuts ! :).

    Voila mon code : 

    console.log("Bienvenue dans ce jeu de devinette !");
    
    // Cette ligne génère aléatoirement un nombre entre 1 et 100
    var solution = Math.floor(Math.random() * 100) + 1;
    
    // Décommentez temporairement cette ligne pour mieux vérifier le programme
     console.log("(La solution est " + solution + ")");
    
    // TODO : complétez le programme
    
    var i;
    var nombreChoisi = Number(prompt("Choississez un nombre entre 1 et 100"));
    console.log(nombreChoisi);
    for (i = 1; i <= 5; i++) {
        // Si le nombre a été deviné
        if (solution === nombreChoisi) {
            prompt("Felicitations, c'était bien " + solution + " qu'il fallait trouver ! Tu as trouvé en " + i + " essais");
            console.log("Tu as trouvé " + solution + " en " + i + " essais");
            break;
        // Si le nombre est trop petit
        } else if (nombreChoisi < solution) {
            nombreChoisi = Number(prompt(nombreChoisi + " est trop petit"));
            console.log(nombreChoisi);
        // Si le nombre est trop grand
        } else if (nombreChoisi > solution) {
            nombreChoisi = Number(prompt(nombreChoisi + " est trop grand"));
            console.log(nombreChoisi);
        // Si ce n'est pas un nombre
        } else {
            nombreChoisi = Number(prompt("Je n'ai pas compris"));
            console.log(nombreChoisi);
        }
    }
        // Si le nombre n'a pas été trouvé au bout de 6 essais.
    if (nombreChoisi !== solution) {
        prompt("Tu as fais tes " + i + " essais. La solution était " + solution);
        console.log("Perdu ! c'était " + solution);
    } else {
        prompt("Felicitations, c'était bien " + solution + " qu'il fallait trouver ! Tu as trouvé en " + i + " essais"); }
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      25 mai 2017 à 16:28:32

      Ça fait plaisir de voir un post dans un français correct et avec un code bien indenté !

      Le message de succès s'affiche deux fois et c'est normal. Si tu poses une condition pour afficher le message après la boucle, cette même étape n'est plus nécessaire à l'intérieur. Il te faut supprimer les lignes 17 et 18.

      Sinon, quelques remarques sur ton code :

      • Math.floor(Math.random() * 100) + 1 : Plutôt Math.ceil(Math.random() * 100) + 0 ;
      • var nombreChoisi = Number(prompt("... : Plutôt = parseInt(prompt("...;
      • prompt("Félicitations... : Plutôt alert("... ;
      • if (nombreChoisi !== solution) { : Plutôt === en inversant les blocs if et else: les humains ont du mal avec les négations...

      -
      Edité par Anonyme 8 octobre 2017 à 18:18:50

      • Partager sur Facebook
      • Partager sur Twitter
        25 mai 2017 à 18:42:40

        Merci beaucoup pour ta réponse ! 

        Ca me semble tellement évident maintenant ...

        Ahah le code Math.floor est de base sur le cours. Pour les autres valeurs j'ai regardé ce qui les différencie (c'est la toute première fois que je code, je connais vraiment que ce que j'ai écrit ci-dessus ...), c'est vraiment intéressant de voir qu'il y ait autant de nuances pour cibler parfaitement ce que l'on recherche ! 

        Enfin bref, merci pour tes remarques, tout fonctionne ! :)

        • Partager sur Facebook
        • Partager sur Twitter
          1 octobre 2017 à 17:17:57

          Bonjour a tous,

          Je suis nouveau en programmation en C et je faisais le jeu du + ou -.

          Je voulais savoir comment puis-je faire pour permettre a mon code de montrer le nombre de fois que l'utilisateur a tenter pour trouver le nombre mystère. 

          Voici mon code:

          #include <stdio.h>

          #include <stdlib.h>

          #include <time.h>

          int main(void )

          {

          int nombreMystere=0;

          int nombreMystere2=0;

          int nombreMystere3=0;

          int nombreEntre=0;

          int i=0;

          const int MAX= 100, MIN = 1;

          srand(time(NULL));

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

          printf("BIENVENUE AU JEU DU + ou - ! BY BATUHAN !! \n");

          printf("Vous avez 5 chances pour trouver le nombre mystere\n");

          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);

              while(i!=nombreEntre)

                 {

                     i--;

                 }

              return 0;

          }

          Merci d'avance pour vos réponses.

          • Partager sur Facebook
          • Partager sur Twitter
            1 octobre 2017 à 20:34:45

            Ne serait-ce pas plutôt 7 essais ? La solution consiste à procéder par dichotomie, c'est-à-dire à couper en deux le nombre de possibilités pour les réduire au plus vite. Or il faut arriver à 2 puissance 7 (128) pour dépasser 100 !

            Un problème plus difficile consisterait à essayer de trouver 2 (3, 4... ou n) valeurs inférieures à m (par exemple 10 pour limiter le nombre d'essais), en  proposant des sous-ensembles de valeurs prises parmi 1 à 10 et disposant à chaque fois des nombre de valeurs choisies contenues dans le sous ensemble (autrement dit chaque sous-ensemble est noté de 1 à n).

            Exemple choix de 2 valeurs par l'ordinateur parmi 10. Quel est la meilleure première proposition ?

            -
            Edité par 007julien 1 octobre 2017 à 20:36:55

            • Partager sur Facebook
            • Partager sur Twitter

            Nombre d'essais dans une boucle + message.

            × 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