Signaler

Rle en JS

Posez votre question maxrzk 7Messages postés dimanche 12 novembre 2017Date d'inscription 12 novembre 2017 Dernière intervention - Dernière réponse le 14 nov. 2017 à 15:50 par jordane45
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



Utile
+1
plus moins
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
jordane45 18911Messages postés mercredi 22 octobre 2003Date d'inscription ModérateurStatut 21 novembre 2017 Dernière intervention - 12 nov. 2017 à 21:20
Au passage ... au lieu du for .. tu peux utiliser un forEach
https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Array/forEach

Et pour spliter :
https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/String/split

Pour l'incrémentation :
https://msdn.microsoft.com/fr-fr/library/26k41698%28v=vs.94%29.aspx?f=255&MSPPError=-2147217396
Répondre
maxrzk 7Messages postés dimanche 12 novembre 2017Date d'inscription 12 novembre 2017 Dernière intervention jordane45 - 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
Répondre
maxrzk 7Messages postés dimanche 12 novembre 2017Date d'inscription 12 novembre 2017 Dernière intervention - 12 nov. 2017 à 21:19
comment je fait pour que ma boucle ne tourne pas à l'infini ?
Répondre
jordane45 18911Messages postés mercredi 22 octobre 2003Date d'inscription ModérateurStatut 21 novembre 2017 Dernière intervention - 12 nov. 2017 à 21:21
En utilisant le foreach que je viens de te donner
Répondre
maxrzk 7Messages postés dimanche 12 novembre 2017Date d'inscription 12 novembre 2017 Dernière intervention - 12 nov. 2017 à 21:41
merci j'essaye tous sa
Répondre
Donnez votre avis
Utile
+0
plus moins
De rien

Et je te redonne même le lien
http://www.commentcamarche.net/faq/10925-demander-de-l-aide-pour-vos-exercices-sur-ccm
Donnez votre avis
Utile
+0
plus moins
var a;
a=prompt("Quel est la liste ?");
var resultat;
var tableau = [];
tableau [0] = "B";
tableau [1] = "N";


C'est bien comme début ?
jordane45 18911Messages postés mercredi 22 octobre 2003Date d'inscription ModérateurStatut 21 novembre 2017 Dernière intervention - 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);
Répondre
Donnez votre avis
Utile
+0
plus moins
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                                                                 
maxrzk- 14 nov. 2017 à 15:25
Bonjours désolé pour mon absence... Merci de votre aide mais je n'arrive pas a faire fonctionner le programme....
Répondre
jordane45 18911Messages postés mercredi 22 octobre 2003Date d'inscription ModérateurStatut 21 novembre 2017 Dernière intervention - 14 nov. 2017 à 15:50
Tu as essayé quoi , où , comment ??
Répondre
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !