Description commentaires .js

Résolu
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);
}
}]
Configuration: Windows XP
Firefox 3.0.3

8 réponses

  1. Contributeur
    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
    1. 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
  2. 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
    1. Contributeur
      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
    2. @Marco la baraqueOki 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
  3. 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
    1. Contributeur
      Tu fermes une accolade de trop il me semble.

      Cordialement,
      0
  4. C'était exactement cela.

    Je te remercie énormémment.

    Merci beaucoup.

    DiM.
    0
    1. Contributeur
      De rien,
      N'oublie de pas de passer le sujet en 'Résolu'.

      A bientôt sur le forum.

      Cordialement,
      0