Rle en JS

maxrzk Messages postés 6 Statut Membre -  
jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

Bonjour,

Etant débutant en JS je viens vous demander de l'aide il faut absolument que je parvienne a réaliser un rle en JS. Mon programme devra demander une liste (ex BBBBBBNN) et le programme devra donner 6B2N. J'ai bien compris qu'il fallais utiliser for et if mais je ne sais pas comment mdr. De plus je pense qu'il faudrais une sorte de compteur...

PS:Merci a la personne qui m'a rapeler que j'avais un cerveau XD

4 réponses

  1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Mais oui.
    Il te faut une boucle
    un IF pour tester si la valeur de ta boucle est identique à la précédente ou non
    Une variable que tu incrémentes à chaque tour de boucle et que tu réinitialise lorsque tu changes de lettre
    Une variable pour stocker le résultat final
    1
    1. maxrzk Messages postés 6 Statut Membre
       
      var a;
      a=prompt("Quel est la liste ?");
      var i=0

      for (i=0;i<=20;i=i+1){
      document.write(a[i]);
      }

      Pour l'instant j'ai sa... donc en gros il faut que je change le for en if et que je rajoute des variable
      0
    2. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > maxrzk Messages postés 6 Statut Membre
       
      En fait il faut :

      Spliter ta variable A pour en faire un array
      Boucler sur ce tableau
      Y mettre un IF pour vérifier si tu as le même caractère ou si tu en a changé
      Si tu es sur le même... incrémenter ta variable
      Si tu es passé à un autre ... stocker le compteur + la lettre dans la variable result
      0
    3. maxrzk Messages postés 6 Statut Membre
       
      comment je fait pour que ma boucle ne tourne pas à l'infini ?
      0
    4. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
       
      0
    5. maxrzk Messages postés 6 Statut Membre > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
       
      merci bcp de ton aide mdrr je débute vraiment j'en suis a mes premieres heure donc ne le prend pas mal si je ne comprend pas tout tout de suite
      0
  2. maxrzk Messages postés 6 Statut Membre
     
    var a;
    a=prompt("Quel est la liste ?");
    var resultat;
    var tableau = [];
    tableau [0] = "B";
    tableau [1] = "N";

    C'est bien comme début ?
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Non.
      Tu ne sais pas à l'avance quelles seront les lettres....
      C'est pour ça qu'il faut SPLITER la variable issue de ton PROMPT

      Regarde déjà ce que donne ces lignes de code :
      var a=prompt("Quel est la liste ?"); 
      var arr = a.split('');
      
      console.log(arr);
      
      0
  3. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Bon.... je suppose que le week end a été dur pour tout le monde.... et que tu vas t'agacer si tu ne trouves pas rapidement la solution...
    Vu la simplicité de l'exo.. je vais te donner la réponse.... ne pouvant assurer un suivi de la discussion toute la nuit... :-)

    Donc voici deux façons de résoudre ton exo :

    Solution 1 :
    function solution1(){
         //on initialise les variables
         var result= "";
         var compteur = 0;
         var liste = prompt("Quel est la liste ?"); 
         var carprec = null;
       
         //on transforme ta liste en array
         var arr = liste.split('');
      
         //on boucle sur chaque lettre
         arr.forEach(function(element) {
          
           if(element != carprec && carprec!=null){
              result += compteur + carprec;
              compteur = 0;
           } 
          //on incrémente le compteur
          compteur++;
      
          //on stocke le caractère précédent pour le if
          carprec = element;
      
       });
    
       result += compteur + carprec;
          
       alert(result);
    }
    
    


    Solution 2 :
    // Autre façon de faire :
     function solution2(){
         var str =  prompt("Quel est la liste ?"); 
        var counts = {};
    
        // Misc vars
        var ch, index, len, count;
    
        // Loop through the string...
       for (index = 0, len = str.length; index < len; ++index) {
         // on récupère le caractère
         ch = str.charAt(index); 
    
        //on compte le nombre de caractère correspondant et on stocke dans l'array counts
       counts[ch] = typeof(counts[ch]) !='undefined' ? counts[ch]+1 : 1;
       
      }  
      
       console.log(counts);
       //on construit la chaine de resultat pour l'afficher
       var result="";
       for ( var key in counts){
          result += counts[key] + key;
       };
       alert(result);
     }
    
    


    Cordialement, 
    Jordane                                                                 
    0
    1. maxrzk
       
      Bonjours désolé pour mon absence... Merci de votre aide mais je n'arrive pas a faire fonctionner le programme....
      0
      1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > maxrzk
         
        Tu as essayé quoi , où , comment ??
        0