Description commentaires .js

Résolu/Fermé
Dimgtdb Messages postés 26 Date d'inscription vendredi 8 juin 2007 Statut Membre Dernière intervention 27 septembre 2019 - 28 oct. 2008 à 10:36
Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 - 4 nov. 2008 à 15:00
Bonjour,

Je suis actuellement entrain d'essayer de déchiffrer un petit programme.
Cependant, un problème persiste sur cette partie ... je ne comprends vraiment pas ce qui se passe.
Quelqu'un pourrait il m'aider à comprendre ce qui se passe sur chaque ligne de ce programme s'il vous plaît quitte à ce que je le paye, c'est vraiment important.
Merci d'avance,
Nicolas.


[function C*(msginitial,decalage,chiffre) {
Alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ';
msginitial.value = msginitial.value.toUpperCase();
k=parseInt(decalage);
while(k<0) {k+=26};
while(k>25) {k-=26};
n=0;
chiffre.value = "";
for(var count = 0; count < msginitial.value.length; count++) {
alpha = msginitial.value.charAt(count);
idx = Alphabet.indexOf(alpha);
if (idx > -1)
{
if ((n%5==0) && (n>0))
{chiffre.value+=" "};
n++;
chiffre.value += Alphabet.charAt(idx+k);
}
}]

8 réponses

Dimgtdb Messages postés 26 Date d'inscription vendredi 8 juin 2007 Statut Membre Dernière intervention 27 septembre 2019 1
28 oct. 2008 à 14:22
up
0
Dimgtdb Messages postés 26 Date d'inscription vendredi 8 juin 2007 Statut Membre Dernière intervention 27 septembre 2019 1
3 nov. 2008 à 08:32
Up svp ...
0
Dimgtdb Messages postés 26 Date d'inscription vendredi 8 juin 2007 Statut Membre Dernière intervention 27 septembre 2019 1
3 nov. 2008 à 14:27
up
0
Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 328
3 nov. 2008 à 21:53
Salut Dimgtdb,
Ta fonction est une fonction de cryptage de message.

while(k<0) {k+=26};
while(k>25) {k-=26};

Ici on va utiliser le nombre entré comme décalage et on va lui ajouter ou retrancher 26 tant qu'on n'est pas dans le bon intervalle pour se trouver dans l'alphabet.

for(var count = 0; count < msginitial.value.length; count++) {
alpha = msginitial.value.charAt(count);
idx = Alphabet.indexOf(alpha);


Ici on va parcourir la chaîne à crypter :
pour chaque caractère, on regarde à quel position de l'alphabet il se trouve (A = 0, B = 1...).

if (idx > -1)
{
...
chiffre.value += Alphabet.charAt(idx+k);
}

Si le caractère est effectivement dans l'alphabet, alors on va crypter en utilisant le cryptage de César :
on récupère le caractère que se trouve k positions plus loin dans l'alphabet (où k est le décallage).

Enfin
if ((n%5==0) && (n>0))
{chiffre.value+=" "};
n++;

Bah ici, tous les 5 caractères, on va insérer un espace pour que la chaîne soit plus lisible sans doute.

Cordialement,

PS : par contre le chiffre.value += Alphabet.charAt(idx+k); me chiffonne un peu, je pense qu'il y a un bug ici. En effet, si idx+k >= 26, alors Alphabet.charAt(idx+k) va retourner -1 et je ne suis pas sûr que ce soit le comportement souhaité (ton message est indescriptible).
0
Dimgtdb Messages postés 26 Date d'inscription vendredi 8 juin 2007 Statut Membre Dernière intervention 27 septembre 2019 1
4 nov. 2008 à 09:28
Bonjour Marco et merci beaucoup pour ta réponse qui m'a beaucoup aidé ...

Cependant, J'aimerai que aiguiller un problème.

"Enfin
if ((n%5==0) && (n>0))
{chiffre.value+=" "};
n++;
Bah ici, tous les 5 caractères, on va insérer un espace pour que la chaîne soit plus lisible sans doute."



En effet, je souhaiterai conserver la même syntaxe de phrase à savoir ne pas effectuer d'espace entre des mots du message crypté et non crypté de manière à, même si le message est crypté, pouvoir retrouver les espaces aux mêmes endroits.

Comment faire s'il te plaît?

Merci beaucoup..
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Dimgtdb Messages postés 26 Date d'inscription vendredi 8 juin 2007 Statut Membre Dernière intervention 27 septembre 2019 1
4 nov. 2008 à 09:56
Je suppose qu'au lieu de la valeur '5' dans :

if ((n%5==0) && (n>0))
{chiffre.value+=" "};
n++;
chiffre.value += Alphabet.charAt(idx+k);

il faudrait que ce soit UN mot mais comment faire ?
0
Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 328
4 nov. 2008 à 12:08
Bonjour,
Il suffit de tester quand tu as un espace, et d'ajouter un espace à la chaîne de sortie :
...
for(var count = 0; count < msginitial.value.length; count++) {
alpha = msginitial.value.charAt(count);

if (alpha == ' ') {
 chiffre.value += alpha;
}

idx = Alphabet.indexOf(alpha);
if (idx > -1) {
 n++;
 chiffre.value += Alphabet.charAt(idx+k);
} 
...


Ainsi tu vas conserver les mêmes "mots", et tu n'auras plus d'espace tous les 5 caractères.

Cordialement,

PS : calme toi un peu avec les up stp, tout le monde n'est pas forcément très disponible dans la journée pour répondre aux problèmes sur ce genre de forum Faut prendre son mal en patience ;)
0
Dimgtdb Messages postés 26 Date d'inscription vendredi 8 juin 2007 Statut Membre Dernière intervention 27 septembre 2019 1 > Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009
4 nov. 2008 à 12:41
Oki désolé.

J'ai bien ajouté ton code à mon programme mais cela ne marche plus.

Lorsque je clique sur mon bouton, aucun traitement n'est effectué ...

Snif.
0
Dimgtdb Messages postés 26 Date d'inscription vendredi 8 juin 2007 Statut Membre Dernière intervention 27 septembre 2019 1
4 nov. 2008 à 11:42
up
0
Dimgtdb Messages postés 26 Date d'inscription vendredi 8 juin 2007 Statut Membre Dernière intervention 27 septembre 2019 1
4 nov. 2008 à 13:49
Voici le corps de ma fonction :

function C*(msginitial,decalage,chiffre) {
Alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ';
msginitial.value = msginitial.value.toUpperCase();
k=parseInt(decalage);
while(k<0) {k+=26};
while(k>25) {k-=26};
n=0;
chiffre.value = "";

for(var count = 0; count < msginitial.value.length; count++) {
alpha = msginitial.value.charAt(count);

if (alpha == ' ') {
chiffre.value += alpha;
}

idx = Alphabet.indexOf(alpha);
if (idx > -1) {
n++;
chiffre.value += Alphabet.charAt(idx+k);
}
}
}
}
0
Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 328
4 nov. 2008 à 14:52
Tu fermes une accolade de trop il me semble.

Cordialement,
0
Dimgtdb Messages postés 26 Date d'inscription vendredi 8 juin 2007 Statut Membre Dernière intervention 27 septembre 2019 1
4 nov. 2008 à 14:55
C'était exactement cela.

Je te remercie énormémment.

Merci beaucoup.

DiM.
0
Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 328
4 nov. 2008 à 15:00
De rien,
N'oublie de pas de passer le sujet en 'Résolu'.

A bientôt sur le forum.

Cordialement,
0