Bonjourr
Actuellement, je programme l'application proposee sur la page des exercices et je suis confronte a un bug En faite je suis en train de coder la compression d'une chaine de characteres avec '@' comme flag. Mon premier probleme est que le code ne marche qu'avec 28 characteres ou moins. Apres, il bug. Mon deuxieme probleme est affich si-dessous:
string rle_encoder::getEncodedText()// on compresse
{
int a=0;// compteur de caracteres
int i[2^32-1]={0};// chaque "case" du tableau contiendra le nombre de characteres identiques
int n=0;//encore un compteur
int j=0;//...encore un compteur
int c=0;//......encore un compteur
int b=0;//...devinez xP
string iStr;// i en string
while(a<m_original_text.size())//tant que a est plus petit que la longeur de la chaine...
{
if(m_original_text[a+j]==m_original_text[a+j+1])//si le charactere actuel est egal au charactere actuel+1
{
i[c]=j+1;//alors la premiere case est egale au charactere actuel dans la chaine de memes characteres....et puisque le prochain charactere est le meme, on fait +1
j++;//+1 meme charactere
}
else//sinon
{
i[c]+=1;//on ajoute 1 dans la case(si le nombre n'a pas
c++;//on change de case
j=0;//on remet le compteur de meme characteres a zero
}
a++;//+1 charactere "parcouru"
}
while(n<=a)//tant que n est plus petit que a(mesure pour le cas toute la chaine est composee de characteres differents
{
if(i[n]!=0 && n!=0)//is le nombre de characteres actuels n'est pas zero et ce n'est pas le premier charactere parcouru
{
ostringstream oss;//convertion
oss<<i[n];//de int
iStr=oss.str();//en string
m_encoded_text+=iStr+"@"+m_original_text[b+i[n]-1];//numero de memes characteres + @ + lettre ( nombre de lettres parcourues + numero de memes lettres actuel - 1 (car les chaines commencent par 0))
b+=i[n];//nombre de lettres parcourues au total += nombre de lettres parcourues dans ce if
}
else if(n==0)//si c'est la premiere case
{
ostringstream oss;//convertion
oss<<i[n];//de int
iStr=oss.str();//en string
m_encoded_text+=iStr+"@"+m_original_text[0];// nombre de memes lettres + @ + premiere lettre
b+=i[n];//nombre de lettres parcourues au total += nombre de lettres parcourues dans ce if
}
n++;//nombre de case parcourues ++
}
return m_encoded_text;// on donne le texte compresse a l'utilisateur
}
Merci d'avance, Shamanas
Probleme compression RLE
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.