Rle en JS

Fermé
maxrzk Messages postés 6 Date d'inscription dimanche 12 novembre 2017 Statut Membre Dernière intervention 12 novembre 2017 - 12 nov. 2017 à 21:03
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 - 14 nov. 2017 à 15:50
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

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
12 nov. 2017 à 21:06
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
maxrzk Messages postés 6 Date d'inscription dimanche 12 novembre 2017 Statut Membre Dernière intervention 12 novembre 2017
12 nov. 2017 à 21:09
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
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649 > maxrzk Messages postés 6 Date d'inscription dimanche 12 novembre 2017 Statut Membre Dernière intervention 12 novembre 2017
12 nov. 2017 à 21:19
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
maxrzk Messages postés 6 Date d'inscription dimanche 12 novembre 2017 Statut Membre Dernière intervention 12 novembre 2017
12 nov. 2017 à 21:19
comment je fait pour que ma boucle ne tourne pas à l'infini ?
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649 > jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024
12 nov. 2017 à 21:20
0
maxrzk Messages postés 6 Date d'inscription dimanche 12 novembre 2017 Statut Membre Dernière intervention 12 novembre 2017 > jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024
12 nov. 2017 à 21:21
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
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
12 nov. 2017 à 21:04
0
maxrzk Messages postés 6 Date d'inscription dimanche 12 novembre 2017 Statut Membre Dernière intervention 12 novembre 2017
12 nov. 2017 à 21:26
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
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
12 nov. 2017 à 21:44
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
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
Modifié le 12 nov. 2017 à 21:54
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
Bonjours désolé pour mon absence... Merci de votre aide mais je n'arrive pas a faire fonctionner le programme....
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649 > maxrzk
14 nov. 2017 à 15:50
Tu as essayé quoi , où , comment ??
0