Exercice 6/6

Soit les variables var1 et var2 qui contiennent chacune du texte identique au début puis qui diffère (les chaînes sont de même longueur).

Dans le fichier "script.js" :

  • écrivez une structure while;
  • tant que les 2 caractères comparés sont identiques incrémentez i (voir l'astuce);
  • après la boucle, affichez simplement i avec alert(). La valeur contenue sera la position à partie de laquelle les chaînes sont différentes.
  • cliquez sur "Soumettre ma réponse".

Leçon 6/6

Exercice de rappel dans lequel il faut écrire un script qui compare deux chaînes lettre par lettre et récupère la position à partir de laquelle les chaînes diffèrent.

Pour comparer les deux caractères en cours, il suffit de vérifier leur égalité ainsi :

chaine1.charAt(i) == chaine2.charAt(i);

Commentaires les mieux notés

  • mram Administrateur

    Oui le message d'erreur en dit trop à la fois. J'ai décomposé en plusieurs messages plus spécifiques et donc plus explicites. N'oubliez pas cependant dans la structure de vos boucles "while" un espace après le while pour plus de lisibilité (mais le code est correct sans).

  • mram Administrateur

    Il faudrait un espace après le while. Comme pour les "if" et les autres types de boucles en fait.

  • mram Administrateur

    Il ne faut pas de ";" à la fin de la ligne 2.

  • mram Administrateur

    Ligne 2, il n'y a pas besoin de ";" à la fin de la ligne. Ce n'est pas une instruction mais une structure de contrôle.

37 Commentaires

  • mram

    mram Administrateur

    Oui le message d'erreur en dit trop à la fois. J'ai décomposé en plusieurs messages plus spécifiques et donc plus explicites. N'oubliez pas cependant dans la structure de vos boucles "while" un espace après le while pour plus de lisibilité (mais le code est correct sans).

    le 29/08/2016 à 17h04

  • mram

    mram Administrateur

    Il faudrait un espace après le while. Comme pour les "if" et les autres types de boucles en fait.

    le 28/02/2017 à 19h58

  • mram

    mram Administrateur

    Il ne faut pas de ";" à la fin de la ligne 2.

    le 21/05/2017 à 22h15

  • mram

    mram Administrateur

    Ligne 2, il n'y a pas besoin de ";" à la fin de la ligne. Ce n'est pas une instruction mais une structure de contrôle.

    le 26/04/2017 à 15h13

  • mickael.59300

    mickael.59300

    Help ! var i =0; while (var1.charAt(i) == var2.charAt(i));{i++;} alert(i);

    le 03/04/2017 à 18h25

  • y.redjah

    y.redjah

    je ne comprends vraiment pas ce qu'il se passe... var i = 0; while (var1.charAt(i) == var2.charAt(i)); { i++; } alert(i);

    le 25/04/2017 à 22h12

  • aure_max

    aure_max

    bonjour, je ne comprends pas mon erreur? la ligne 2 semble poser soucis var i = 0; while (var1.charAt(i) = var2.charAt(i)) { i++; } alert("i");

    le 23/01/2017 à 22h48

  • david.messagerie

    david.messagerie

    Merci mram.

    le 03/03/2017 à 23h21

  • patricerameaux

    patricerameaux

    où est l'erreur : il me parait normal de mettre alert dans la boucle sinon ça n'a pas de sens

    le 12/10/2016 à 11h49

  • patricerameaux

    patricerameaux

    avez-vous bien incrémenté i avez vous bien affiché i dans la boucle while : où est le problème ?

    le 12/10/2016 à 11h56

  • mram

    mram Administrateur

    Supprimez les espaces au début de vos lignes, ils ne sont pas nécessaires.

    le 05/04/2017 à 13h21

  • mram

    mram Administrateur

    @aure_max : et oui, vous n'utilisez pas l'opérateur de comparaison (pour vérifier une égalité dans ce cas) mais l'opérateur d'affectation utilisé pour affecter ou attribuer une valeur à une variable.

    le 27/01/2017 à 15h25

  • mram

    mram Administrateur

    Dans l'exercice on demande d'afficher seulement la position à partir de laquelle le texte diffère entre les 2 chaîne de caractères. Donc il suffit d'afficher "i" seulement quand on sort de la boucle (c'est à dire quand les 2 textes deviennent diffèrent)...

    le 16/10/2016 à 23h40

  • mram

    mram Administrateur

    Et même souci, le code lignes 3 à 6 a une indentation en trop.

    le 16/10/2016 à 23h41

  • danderhy3

    danderhy3

    bonjour , j'ai une erreur quelque part dans mon code pouvez vous m'indiquer lequel merci var i = 0; while (var1.charAt(i) == var2.charAt(i)); { i++; } alert(i); MESSAGE OF NULL

    le 16/05/2017 à 11h27

  • david.messagerie

    david.messagerie

    Vérifiez la structure de la boucle while. Avez-vous bien incrémenté "i" dans la boucle ? pourtant OUI !

    le 25/02/2017 à 19h31

  • pascal-ds

    pascal-ds

    cette fois j'ai un message beaucoup plus long : "Vérifiez la structure de la boucle. Avez-vous bien incrémenté "i" dans la boucle et comparé les caractères de chaque chaîne à la position i dans la condition "while" ?" Pour info, lorsque que je déclare moi-même var1 et var2 et que je teste, le code fonctionne parfaitement... la réponse est "oui" et "oui" aux deux questions du robot correcteur... j'arrête pour aujourd'hui, j'avoue que c'est un tantinet décourageant à force...

    le 29/08/2016 à 12h00

  • pascal-ds

    pascal-ds

    pour en avoir le coeur net au cas où, j'ai tenté l'expérience avec firefox et chrome... même combat.

    le 29/08/2016 à 12h01

  • pascal-ds

    pascal-ds

    ah ! c'était l'espace après le while qui bloquait !... sans : ça coince... je retourne dans les autres exercices vérifer la trouvaille.

    le 30/08/2016 à 08h54

  • pascal-ds

    pascal-ds

    zut, fausse joie. Les autres exercices restent bloqués avec ou sans l'espace après while.

    le 30/08/2016 à 08h57

  • mram

    mram Administrateur

    Le code de votre avant dernier message est correct. Normalement vous avez validé cet exercice.

    le 30/08/2016 à 13h52

  • jeanrigaber

    jeanrigaber

    help message d'erreur "i" ne contient pas la valeur attendue. Revoyez votre code. mon code var i = 0;while (var1.charAt(i) == var2.charAT(i)){i++;}alert(i)

    le 31/08/2017 à 14h35

  • mram

    mram Administrateur

    Bonjour, et oui ligne 2 c'est .charAt() et non .charAT() ...

    le 06/09/2017 à 10h07

  • nathalie.chenparis

    nathalie.chenparis

    Bonjour, ne faite pas attention a mon précedent commentaire, j'ai saisie (j'ai mal lu l'énoncé) merci quand meme !

    le 14/05/2018 à 12h14

  • veronique.nollet

    veronique.nollet

    Bonjour, j'ai le message suivant : Unexpected token { je ne vois pas : var i = 0; while (var1.charAt(i) == var2.charAt(i) { i++; } alert(i);

    le 17/04/2018 à 21h00

  • mram

    mram Administrateur

    Bonjour, il manque une parenthèse ) ligne 2.

    le 18/04/2018 à 05h17

  • bernardraphael13

    bernardraphael13

    Erreur(s) : Vérifiez la structure de la boucle while. Avez-vous bien incrémenté "i" dans la boucle ?mon code var i=0; while (var1.charAt(i)==var2.charAt(i)) { i++; } alert(i);

    le 23/06/2017 à 14h04

  • mram

    mram Administrateur

    Mettez l'accolade ligne 2 à la ligne suivante.

    le 28/06/2017 à 15h04

  • djalloh2016-72

    djalloh2016-72

    Bonjour tout le monde une petite précision:retenez une fois pour toute votre vie on ne met jamais un";" à la fin de la condition while(),for() ou if() car ce sont pas des instructions c'est seulement à l'intérieur des accolades qu'on met les ";" normalement pour celui qui n'a sauter aucun exo devrait qu'à même comprendre cela ce que je dis là est valable pour tous les langages de programmations

    le 27/02/2018 à 18h40

  • triplaxs

    triplaxs

    bonjours var i=0; while (var1.charAt(i) == var2.charAt(i)) { i++; } alert(i);

    le 14/08/2017 à 14h24

  • mram

    mram Administrateur

    Bonjour, ligne 3 il y a un espace en trop en fin de ligne, on attend un retour à la ligne direct.

    le 17/08/2017 à 15h39

  • ets_raphael-59

    ets_raphael-59

    Je ne comprends pas pourquoi le miens ne marche pas pourtant tout y est..

    le 26/07/2018 à 23h06

  • mram

    mram Administrateur

    Peut-être un espace après "while" ? A tester ...

    le 02/08/2018 à 05h04

  • charlotte.pupet34-92

    charlotte.pupet34-92

    je vois pas mon erreur ici : var i = 0; while(var1.charAt(i) == var2.charAt(i)) { i++; } alert(i)

    le 24/03/2018 à 23h26

  • mram

    mram Administrateur

    Bonjour, ajoutez juste un espace après "while" et ça devrait être bon.

    le 28/03/2018 à 05h58

  • yselim1-13

    yselim1-13

    Incompréhensible, toujours impossible de valider cet exercice comme les précedents. Voilà le message qu'il m'affiche : Vérifiez la structure de la boucle while. Avez-vous bien incrémenté "i" dans la boucle ?,Avez-vous bien affiché "i" avec alert() ? Pourriez-vous valider mes exercices afin que je puisse continuer en toute sérénité svp ? Merci

    le 25/06/2018 à 00h57

  • mram

    mram Administrateur

    Il faut mettre alert() en dehors de la boucle, car on souhaite afficher une fois que la boucle à fini de s'exécuter.

    le 28/06/2018 à 03h32

  • nkeshimanabrice-37

    nkeshimanabrice-37

    pouvez-vous corriger...

    le 10/12/2018 à 16h55

  • meriam

    meriam Administrateur

    Utiliser == pour faire la comparaison des caractères( var1.charAt(i) == var2.charAt(i)), le signe = pour faire l'affectation , == pour vérifier si les deux varaibles ont la meme valeur , et === pour vérifier si les variables ont la meme valeur et le meme type).

    le 11/12/2018 à 09h45

  • alexdisdier

    alexdisdier

    j'ai checker avec la console et mon code marche. Quel est mon erreur? var i = 0; while (var1.charAt(i) === var2.charAt(i)) { i++; } alert(i);

    le 04/07/2017 à 22h23

  • mram

    mram Administrateur

    Bonjour, oui en effet mais ici l'opérateur de comparaison est trop strict, il faut utiliser celui qui ne vérifie que les valeurs et non le type de variable (ligne 2).

    le 07/07/2017 à 11h36

  • m.benamara94

    m.benamara94

    Bonjour, quel est mon erreur ? var i = 0; while (var1.charAt(i) == var2.charAt(i)); { i++; } alert(i);

    le 07/01/2018 à 21h53

  • mram

    mram Administrateur

    Bonjour, il ne faut jamais mettre de " ; " au niveau d'une structure de contrôle (while, for, if, else ... ).

    le 12/01/2018 à 01h31

  • lolululo-22

    lolululo-22

    bonjour, je ne comprends pas mon erreur. var i = 0; while (var1.charAt(i) == var2.charAt(i)) { i++; } alert(i);. Quand je clique sur soumettre, il m'affiche "Vérifiez la structure de la boucle while. Avez-vous bien incrémenté "i" dans la boucle ?".

    le 05/06/2018 à 16h48

  • mram

    mram Administrateur

    Bonjour, attention aux espaces inutiles en fin de ligne. Le code lui-même est correct.

    le 07/06/2018 à 04h59

index.html
script.js
<!DOCTYPE HTML> <html> <head> <title>Exercice rappel 6</title> <script src="script.js"></script> </head> <body> </body> </html>
/* Vous pouvez modifier le contenu des variables */ var var1 = 'abcdefghijklmnopqrstuvwxyz'; var var2 = 'abcdefghijklmn123456789ABC'; var i = 0; /* Votre boucle ici */ alert(i);