Problème && ||
Résolu/Fermé
iamtheone
Messages postés
39
Date d'inscription
lundi 10 avril 2017
Statut
Membre
Dernière intervention
8 mai 2017
-
26 avril 2017 à 00:03
iamtheone Messages postés 39 Date d'inscription lundi 10 avril 2017 Statut Membre Dernière intervention 8 mai 2017 - 26 avril 2017 à 21:59
iamtheone Messages postés 39 Date d'inscription lundi 10 avril 2017 Statut Membre Dernière intervention 8 mai 2017 - 26 avril 2017 à 21:59
2 réponses
jordane45
Messages postés
38308
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
26 avril 2017 à 01:38
26 avril 2017 à 01:38
Bonjour,
J'ai un peu la flemme de décortiquer ton code ...;
par contre.. toi tu peux déjà ajouter un peu de débogage ( à l'aide de console.log .. ) dans ton code histoire d'essayer de comprendre ce qui ne "marche" pas.
Par exemple, avant ton if
tu pourrais faire des console.log de chaque bloc et voir ce que ça t'affiche :
au passage ... évites si possible les variables globales (sauf si vraiment nécessaire... ce qui n'est pas le cas ici ) et préfères utiliser le passage de paramètres et les return dans tes fonctions.
J'ai un peu la flemme de décortiquer ton code ...;
par contre.. toi tu peux déjà ajouter un peu de débogage ( à l'aide de console.log .. ) dans ton code histoire d'essayer de comprendre ce qui ne "marche" pas.
Par exemple, avant ton if
if (dn.indexOf("m") == -1 && (dn.indexOf("a")>=0 || dn.indexOf("q")>=0 || dn.indexOf("z")>=0))
tu pourrais faire des console.log de chaque bloc et voir ce que ça t'affiche :
console.log('dn.indexOf(m) :' + dn.indexOf("m") ); console.log('dn.indexOf(a) :' + dn.indexOf("a") ); console.log('dn.indexOf(q) :' + dn.indexOf("q") ); console.log('dn.indexOf(z) :' + dn.indexOf("z") );
au passage ... évites si possible les variables globales (sauf si vraiment nécessaire... ce qui n'est pas le cas ici ) et préfères utiliser le passage de paramètres et les return dans tes fonctions.
Utilisateur anonyme
Modifié le 26 avril 2017 à 07:48
Modifié le 26 avril 2017 à 07:48
Bonjour
Le mot "macaque" ,n'est pas un bon exemple puisque tu n'appliques pas qwerty aux mots qui contiennent m.
Si on oublie ce détail, ton problème vient de l'accumulation de deux autres :
- La fonction String.replace que tu utilises dans qwerty ne modifie que la première occurence du caractère recherché.
- Tu fais tes substitutions les unes après les autres. Si on considère le mot acaque :
. il devient d'abord qcaque
. puis on trouve le deuxième a, il devient qcqque
. puis on trouve le q suivant et on remplace, mais c'est le premier q qui est remplacé : on obtient acqque
À ta place, dans qwerty, je recopierais la chaîne caractère par caractère en faisant la substitution quand je rencontre l'un des caractères à transformer.
Le mot "macaque" ,n'est pas un bon exemple puisque tu n'appliques pas qwerty aux mots qui contiennent m.
Si on oublie ce détail, ton problème vient de l'accumulation de deux autres :
- La fonction String.replace que tu utilises dans qwerty ne modifie que la première occurence du caractère recherché.
- Tu fais tes substitutions les unes après les autres. Si on considère le mot acaque :
. il devient d'abord qcaque
. puis on trouve le deuxième a, il devient qcqque
. puis on trouve le q suivant et on remplace, mais c'est le premier q qui est remplacé : on obtient acqque
À ta place, dans qwerty, je recopierais la chaîne caractère par caractère en faisant la substitution quand je rencontre l'un des caractères à transformer.
iamtheone
Messages postés
39
Date d'inscription
lundi 10 avril 2017
Statut
Membre
Dernière intervention
8 mai 2017
26 avril 2017 à 14:48
26 avril 2017 à 14:48
Oui c'est pas un bon exemple :$. Sinon merci de ta réponse, mais je ne vois pas comment faire d'une autre manière... Help :'(
Utilisateur anonyme
>
iamtheone
Messages postés
39
Date d'inscription
lundi 10 avril 2017
Statut
Membre
Dernière intervention
8 mai 2017
26 avril 2017 à 18:48
26 avril 2017 à 18:48
Tu as lu mes deux dernières lignes ? Je ne peux pas croire qu'ayant écrit tout ça tu ne les comprends pas, C'est beaucoup plus simple que tout ce que tu as fait avant.
iamtheone
Messages postés
39
Date d'inscription
lundi 10 avril 2017
Statut
Membre
Dernière intervention
8 mai 2017
Modifié le 26 avril 2017 à 19:22
Modifié le 26 avril 2017 à 19:22
Je sais pas, ce matin je devais pas être bien réveillé... Bref, voilà le code fonctionnel :
Merci de ton aide :))
function qwerty() { var dnqw = ""; for (i=0; i<dnl; i++) { if (qw[dn.charAt(i)]) { dnqw += qw[dn.charAt(i)]; } else { dnqw += dn.substring(i, i+1); } } result1.push(dnqw); }
Merci de ton aide :))
Utilisateur anonyme
>
iamtheone
Messages postés
39
Date d'inscription
lundi 10 avril 2017
Statut
Membre
Dernière intervention
8 mai 2017
26 avril 2017 à 21:33
26 avril 2017 à 21:33
De rien :)
Pour le else, moi j'aurais simplement mis dnqw += dn.charAt(i);
J'aurais même sans doute utilisé l'opérateur ternaire :
Pour le else, moi j'aurais simplement mis dnqw += dn.charAt(i);
J'aurais même sans doute utilisé l'opérateur ternaire :
var c= dn.charAt(i); dnqw +=qw[c] ? qw[c] : c;
iamtheone
Messages postés
39
Date d'inscription
lundi 10 avril 2017
Statut
Membre
Dernière intervention
8 mai 2017
>
Utilisateur anonyme
26 avril 2017 à 21:59
26 avril 2017 à 21:59
Ah oui c'est sûr que c'est hien plus compacte, merci. Mais pour le moment je vais en rester à l'écriture "détaillée" car je débute ;).