IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Le chiffre de César


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 27
    Par défaut Le chiffre de César
    Bonjour tout le monde, je suis en terminale S, option initiation aux sciences du numérique. Nos deux profs nous on donné pour la semaine prochaine un devoir sur le chiffre de césar (cryptage) le probléme, c'est que nous avons eu à proprement parlé, aucun cours, je bloque donc pour la fin du programme, je pense que le début est bon, mais je bloque pour afficher le message dans la deuxième fenêtre, voila le code:

    HTML:

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    <!DOCTYPE html>
     
    <html>
      <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>Chiffrement</title> 
        <meta name="author" content="ISN_Robespierre" />
        <link href="chiffrer.css" rel="stylesheet" type="text/css" media="screen"/>
      </head>
      <body>
    	<h1>Le chiffre de César.</hi>
    		<p>Message à traiter:</p>
    		<textarea id="message1"></textarea>
    		</br>
    		clef:<input id="clef" type="text" value="3">
    			<button type="button" id="boutonChiffrer" > Chiffrer </button>
    			<button type="button" id="boutonDechiffrer" > Dechiffrer </button>
    		<p>Message traité:</p>
    			<div id="message2"><div>
     
        <script type="text/javascript" src="chiffrer.js" >  </script>	
      </body>
    </html>

    Javascript:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    var clef;
    var message1;
    var message2;
     
    var setupEvents = function() {
     
    	clef = document.getElementById("clef");  
        message1 = document.getElementById("message1");
    	message2 = document.getElementById("message2");
     
    	var boutonChiffrer = document.getElementById("boutonChiffrer");
    	var boutonDechiffrer = document.getElementById("boutonDechiffrer");
    	boutonChiffrer.addEventListener("click", actualiserMessage2);
    	boutonDechiffrer.addEventListener("click", dechiffrer);
    }
     
    window.addEventListener("load", setupEvents);
     
    var actualiserMessage2 = function() 
    {
    	var nombreClef = parseFloat(clef.value);
        var onChiffre = chiffrer(message1, nombreClef);
    	message2.value=onChiffre;
     
    }
     
     
     
    var chiffrer = function(message1, clef) {
        var message2 = "";
    	var taille = message1.lenght();
        for(var i = 0; i < taille; i++) 
    	{
            var messageUnCaractere = message1.charCodeAt(i);
            if(messageUnCaractere >= 97 && messageUnCaractere <= 122) 
    		{
                message2 += String.fromCharCode((messageUnCaractere - 97 + clef) % 26 + 97);
            } 
    		else if(messageUnCaractere >= 65 && messageUnCaractere <= 90) 
    		{
                message2 += String.fromCharCode((messageUnCaractere - 65 + clef) % 26 + 65);
            } 
    		else 
    		{
                message2 += String.fromCharCode(messageUnCaractere);
            }
        }
        return message2;
    }
     
    var dechiffrer = function(message1, clef) {
        var message2 = "";
    	var taille = message1.lenght();
        for(var i = 0; i < taille; i++) 
    	{
            var messageDeuxCaractere = message1.charCodeAt(i);
            if(messageDeuxCaractere >= 97 && messageDeuxCaractere <= 122) 
    		{
                message2 += String.fromCharCode((messageDeuxCaractere - 97 - clef + 26) % 26 + 97);
            } 
    		else if(messageDeuxCaractere >= 65 && messageDeuxCaractere <= 90) 
    		{
                message2 += String.fromCharCode((messageDeuxCaractere - 65 - clef + 26) % 26 + 65);
            } 
    		else 
    		{
                message2 += String.fromCharCode(messageUnCaractere);
            }
        }
        return message2;
    }
    Voila, je n'arrive pas à trouver le problème, je n'ai pas un excellent niveau mais je pense être le seul à être arrivé aussi "loin". Merci de votre aide bonne journée

  2. #2
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Par défaut
    Bonjour,

    Pour les champs texte <input> ou <textarea>, récupérer ou modifier la valeur du champ se fait grâce à l'attribut value, comme tu as fait. En revanche, pour les autres éléments comme <div>, il faut modifier le contenu HTML de cet élément via innerHTML ou textContent.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    message2.textContent = chiffrer(message1, nombreClef);

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 27
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var actualiserMessage2 = function() 
    {
    	var nombreClef = parseFloat(clef.value);
        var onChiffre = chiffrer(message1, nombreClef);
    	message2.innerHTML = chiffrer(message1, nombreClef);
     
    }
    C'est bien ici la dernière phrase à changer non ?

    Je dois avoir oublier une étape, mais je n'arrive pas à distinguer lequel.

    PS: Apparement déjà, la fonction est message1.lenght;
    et non pas message1.lenght();

    Mais ça ne m'affiche toujours pas de message

  4. #4
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Par défaut
    En fait c'est length

    Utilise la console et un debugger pour repérer les erreurs dans ton code :
    http://javascript.developpez.com/faq...syntaxe#Erreur

  5. #5
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 209
    Par défaut
    Bonjour,
    si je m'en réfère à tes déclarations de variables on trouve
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    message1 = document.getElementById("message1");
    donc normal que message1 n'est pas de length, tu as l'élément mais pas son contenu.

    Au passage pas forcément judicieux du tout d'utiliser le même nom surtout si ta variable est globale.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 27
    Par défaut
    Salut tout le monde ! Merci pour votre aide j'ai réussis à finaliser le problème ! Le programme marche maintenant parfaitement (du moins de ce que j'ai essayé) Voici le code si jamais quelqu'un rencontre le même problème: (Je suppose qu'il n'est pas optimisé mais bon, ça devrait aller)

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    <!DOCTYPE html>
     
    <html>
      <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>Chiffrement</title> 
        <meta name="author" content="ISN_Robespierre" />
        <link href="chiffrer.css" rel="stylesheet" type="text/css" media="screen"/>
      </head>
      <body>
    	<h1>Le chiffre de César.</hi>
    		<p>Message à traiter:</p>
    		<textarea id="message1"></textarea>
    		</br>
    		clef:<input id="clef" type="text" value="3">
    			<button type="button" id="boutonChiffrer" > Chiffrer </button>
    			<button type="button" id="boutonDechiffrer" > Dechiffrer </button>
    		<p>Message traité:</p>
    			<div id="message2"><div>
     
        <script type="text/javascript" src="chiffrer.js" >  </script>	
      </body>
    </html>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    var clef;
    var message1;
    var message2;
     
    var setupEvents = function() {
     
    	clef = document.getElementById("clef");  
        message1 = document.getElementById("message1");
    	message2 = document.getElementById("message2");
     
    	var boutonChiffrer = document.getElementById("boutonChiffrer");
    	var boutonDechiffrer = document.getElementById("boutonDechiffrer");
    	boutonChiffrer.addEventListener("click", actualiserMessage2Chiffrer);
    	boutonDechiffrer.addEventListener("click", actualiserMessage2Dechiffrer);
    }
     
    window.addEventListener("load", setupEvents);
     
    var actualiserMessage2Chiffrer = function() 
    {
    	var nombreClef = parseFloat(clef.value);
    	var messageUn = message1.value;
        var onChiffre = chiffrer(messageUn, nombreClef);
    	message2.innerHTML = onChiffre;
     
    }
     
    var actualiserMessage2Dechiffrer = function()
    {
     var nombreClef = parseFloat(clef.value);
     var messageUn = message1.value;
     var onDechiffre = dechiffrer(messageUn, nombreClef);
     message2.innerHTML = onDechiffre;
    }
     
     
     
    var chiffrer = function(message1, clef) {
        var message2 = "";
    	var taille = message1.length;
        for(var i = 0; i < taille; i++) 
    	{
            var messageUnCaractere = message1.charCodeAt(i);
            if(messageUnCaractere >= 97 && messageUnCaractere <= 122) 
    		{
                message2 += String.fromCharCode((messageUnCaractere - 97 + clef) % 26 + 97);
            } 
    		else if(messageUnCaractere >= 65 && messageUnCaractere <= 90) 
    		{
                message2 += String.fromCharCode((messageUnCaractere - 65 + clef) % 26 + 65);
            } 
    		else 
    		{
                message2 += String.fromCharCode(messageUnCaractere);
            }
        }
        return message2;
    }
     
    var dechiffrer = function(message1, clef) {
        var message2 = "";
    	var taille = message1.length;
        for(var i = 0; i < taille; i++) 
    	{
            var messageDeuxCaractere = message1.charCodeAt(i);
            if(messageDeuxCaractere >= 97 && messageDeuxCaractere <= 122) 
    		{
                message2 += String.fromCharCode((messageDeuxCaractere - 97 - clef + 26) % 26 + 97);
            } 
    		else if(messageDeuxCaractere >= 65 && messageDeuxCaractere <= 90) 
    		{
                message2 += String.fromCharCode((messageDeuxCaractere - 65 - clef + 26) % 26 + 65);
            } 
    		else 
    		{
                message2 += String.fromCharCode(messageDeuxCaractere);
            }
        }
        return message2;
    }
    Voila encore merci pour votre aide, je dois maintenant créer un bouton qui recopie le message crypté dans la fenêtre 1, je vais essayer de faire cela, mais je pense que le plus dur est fait Bonne journée !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. probleme implémentation code crypto chiffre de césar
    Par hakim lyonnais dans le forum Débuter
    Réponses: 5
    Dernier message: 16/04/2015, 17h04
  2. chiffre de césar
    Par Krorys dans le forum Général Python
    Réponses: 3
    Dernier message: 05/10/2012, 15h11
  3. [Turbo Pascal] Chiffrement par décalage (chiffre de César)
    Par tessafadel10 dans le forum Turbo Pascal
    Réponses: 2
    Dernier message: 14/06/2010, 22h43
  4. Recherche programme qui convertit les chiffres arabes en nb
    Par oli57 dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 15/06/2002, 03h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo