Aide pour ce mini compresseur

cs_sizixe Messages postés 5 Date d'inscription lundi 27 juillet 2009 Statut Membre Dernière intervention 28 mars 2010 - 28 mars 2010 à 15:44
deadhand Messages postés 152 Date d'inscription dimanche 15 octobre 2006 Statut Membre Dernière intervention 27 août 2010 - 28 mars 2010 à 17:52
bonjour,
voila mon problème : je veux faire un petit programme qui permet de compressé les chaine de caractères ex: la chaine aaaabbb il vas l'écrire :4a3b.
je sais que c nul comme programme mais bon: voila mon code:
#include <stdlib.h>
#include <stdio.h>

int main()
{
    int tab[]={'a','a','a','b','b'},i=0,a=0,b=0,j=0;

    for(i=0;i<5;i++)
    if(tab[0]==tab[i])
    {
        a++;
    }
    printf("%d letre de %c\n",a,tab[0]);

    for(j=0;j<5;j++)
    if(tab[3]==tab[j])
    {
        b++;
    }
    printf("%d letre  de %c\n\n",b,*(tab+3) );

}

quand je compile ca va ,mais quand je change la chaine tab le résultat est un peut . . .faux
ex :si je fais tab[]={'a','b','b','b','b'}
le résultat est faux il me mets truck flous . .
comment je fais pour avoir le bon résultat même si la chaine change.
merci

1 réponse

deadhand Messages postés 152 Date d'inscription dimanche 15 octobre 2006 Statut Membre Dernière intervention 27 août 2010 3
28 mars 2010 à 17:52
Ah ben ca c'est sur !! Ton code ne prend en compte qu'un cas !!!!!!
#include <stdlib.h>
#include <stdio.h>

int main()
{
    int tab[]={'a','a','a','b','b'},i=0,a=0,b=0,j=0;
    
    for(i=0;i<5;i++)
       if(tab[i==0?0:i-1]==tab[i])
       {
           a++;
       }
       else {
          printf("%d letre de %c\n",a,tab[i==0?0:i-1]);
          a = 1;
       }
   // Fin de la boucle
   printf("%d letre de %c\n",a,tab[i]);
}


Voilà ! Je pense que çà doit marcher.
0