Partage
  • Partager sur Facebook
  • Partager sur Twitter

PALINDROME

Sujet résolu
    25 octobre 2016 à 22:42:44

    Bonjour à tous,

    j'ai un problème au chapitre 6. Au fait je n'arrive pas à résoudre l'exercice du palindrome. Voici mon code JS qui ne marche pas certainement je ne vois pas l'erreur que j'ai faite. Quelqu'un peut il m'aidé.

    Merci d'avance.

    var chaine = prompt("Saisissez un mot"); // Fait saisir un mot à l'utilisateur

    // Inverse d'un mot

    function inverse(inv) {

        var motInverse = " "; // Initialisation de la variable qui contiendra le mot inversé

        for (var j = chaine.length - 1; j >= 0; ) {

            motInverse += chaine[j]; // Recupère et agence à l'envers le mot saisi par l'utilisateur

            j--; // Contrôle le nombre de caractère du mot

        }return motInverse;

    }

    console.log("Il s'écrit à l'envers " + inverse(chaine));

    // Palindrome

    var motMinuscule = chaine.toLowerCase();

    var initia = inverse(chaine);

    var motInvMinus = initia.toLowerCase();

    if (motMinuscule === motInvMinus){

        console.log(chaine + " C'est un palindrome");

    } else {

        console.log(chaine + " Ce n'est pas un palindrome");

    }

    • Partager sur Facebook
    • Partager sur Twitter
    "Le plus haut dégré de liberté est l'union la étroite avec DIEU": Spinoza.
    Anonyme
      26 octobre 2016 à 8:17:09

      Bonjour,

      Merci d'utiliser les balises de code (avant dernier bouton) si tu veux qu'on t'aide.

      Merci.

      -
      Edité par Anonyme 26 octobre 2016 à 8:18:56

      • Partager sur Facebook
      • Partager sur Twitter
        26 octobre 2016 à 8:25:00

        Salut,

        ton for n'a pas la bonne syntaxe :

         for (var j = chaine.length - 1; j >= 0; j--)
        //au lieu de :
         for (var j = chaine.length - 1; j >= 0; )

        Tu dois faire le désincrément dans la 3ème directive for. Là tu as fait un mélange entre un while et un for...

        Edit : apparement ça peut être omi d'après la doc.

        Je dirais alors que "inv" n'est pas utilisé dans la fonction et tu devrais plutôt l'utiliser en paramètre uniquement plutot que d'utiliser directement la variable globale chaine.

        Pour recupérer un caractère c'est 

        chaine.charAt(j)

         
         

        -
        Edité par Niko300 26 octobre 2016 à 8:35:15

        • Partager sur Facebook
        • Partager sur Twitter
          26 octobre 2016 à 9:39:26

          Merci beaucoup pour votre aide, mais mon problème ne se situe pas au niveau de la fonction inverse mais plutôt au  niveau du if qui ne répond pas pourtant lorsque je débug avec Firefox les variables sont bien renseignées.

          // Inverse d'un mot
          
          function inverse(inv) {
              var motInverse = " "; // Initialisation de la variable qui contiendra le mot inversé
              for (var j = chaine.length - 1; j >= 0; ) {
                  motInverse += chaine[j]; // Recupère et agence à l'envers le mot saisi par l'utilisateur
                  j--; // Contrôle le nombre de caractère du mot
              }return motInverse;
          }
          console.log("Il s'écrit à l'envers " + inverse(chaine));
          
          // Palindrome
          
          var motMinuscule = chaine.toLowerCase();
          var initia = inverse(chaine);
          var motInvMinus = initia.toLowerCase();
          if (motMinuscule === motInvMinus){
              console.log(chaine + " C'est un palindrome");
          } else {
              console.log(chaine + " Ce n'est pas un palindrome");
          }
          



          • Partager sur Facebook
          • Partager sur Twitter
          "Le plus haut dégré de liberté est l'union la étroite avec DIEU": Spinoza.
            26 octobre 2016 à 11:06:27

            Ce ne serait pas à cause de l'espace dans motInverse ?

            Pourquoi ne pas l'initialiser à vide : "" ?

            • Partager sur Facebook
            • Partager sur Twitter
              26 octobre 2016 à 16:25:39

              Un grand merci pour le cout de pousse. C'était effectivement l'espace de ma variable motInverse qui me posait problème.
              • Partager sur Facebook
              • Partager sur Twitter
              "Le plus haut dégré de liberté est l'union la étroite avec DIEU": Spinoza.
                16 mai 2017 à 17:10:39

                Bonjour,
                J'ai besoin d'aide, je ne comprends pas pourquoi la réponse est "n'est pas un palindrome. La reponse devrait être "radar est un palindrome.
                Merci d'avance
                //Information sur le mot
                var mot = "radar" ; {
                    console.log("Le mot " + mot + " contient " + mot.length + " caractères");
                    console.log("Il s'écrit en minuscule " + mot.toLowerCase());
                    console.log("Il s'écrit en majuscule " + mot.toUpperCase());
                }
                //Comptage du nombre de voyelles et de consonnes
                function compterNbVoyelle(mot) {
                  var nbVoyelle = 0;
                  for (i = 0; i < mot.length; i++) {
                    if (mot[i].toLowerCase() === "a" || mot[i].toLowerCase() === "e" || mot[i].toLowerCase() === "y" || mot[i].toLowerCase() === "u" || mot[i].toLowerCase() === "i" || mot[i].toLowerCase() === "o") {
                      nbVoyelle++;
                    }
                  }
                  console.log(mot + " contient " + nbVoyelle + " voyelle(s) " + (mot.length - nbVoyelle) + " consonne(s).");
                }
                compterNbVoyelle("radar");
                //Inversion du mot
                function inverser(mot) {
                    var motInverse = "";
                    // Solution 1 : ajouter chaque lettre au début du mot inversé
                    for (var i = 0; i < mot.length; i++) {
                        motInverse = mot[i] + motInverse;
                    }
                    console.log (motInverse);
                }
                inverser("radar");
                //Palindrome ou pas palindrome?
                if (mot === inverser(mot)){
                    console.log(mot + " est un palindrome");
                } else {
                    console.log(mot + " n'est pas un palindrome");
                }

                -
                Edité par AurélieDejean 16 mai 2017 à 17:11:50

                • Partager sur Facebook
                • Partager sur Twitter
                  16 mai 2017 à 18:03:44

                  Ta fonction inverser() ne renvoie rien, pas de return, donc pourquoi tu l'utilises dans un if qui est censé comparer les valeurs retournées ?

                  L'instruction if doit comparer le mot et la valeur retournée par la fonction inverser(), sauf qu'elle ne renvoie rien.

                  -
                  Edité par ChrisTopher6 16 mai 2017 à 18:08:48

                  • Partager sur Facebook
                  • Partager sur Twitter

                  PALINDROME

                  × 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