Affichage des occurence dans une chaine de caractère

Résolu
fiorellafatma Messages postés 6 Date d'inscription mardi 18 mai 2010 Statut Membre Dernière intervention 23 mai 2010 - 23 mai 2010 à 15:07
fiorellafatma Messages postés 6 Date d'inscription mardi 18 mai 2010 Statut Membre Dernière intervention 23 mai 2010 - 23 mai 2010 à 22:55
salut à tous
voila je dois faire un programme qui prend une chaine de caractère et retourne le nombre d' occurence de chaque caractère
comme suit
entrer la chaine : jeanne
1 fois se répète 'A'
2 fois se répète 'E'
1 fois se répète 'J'
2 fois se répète 'N'
voici mon programme mais la fonction remplirabc n'arrive pas à s'executer quelle est le problème svp?


#include<stdio.h>
#include<string.h>
void remplirabc(char* chr,int occ1,int *abcd);


void main()
{
char ch[101],*cht;
int abc[26],l,occ,i,h,j,g;


printf("entrer la chaine a saisir: ");
gets(ch);
l=strlen(ch);
for (i=0;i<l;i++)
{
occ=0;
for (j=0;j<l;j++)
{
if(*(ch+j)==*(ch+i))
occ++;
printf("%c\n",*(ch+j));
}
printf("%d\n",occ);

for(h=0;h<26;h++)
*(abc+h)=0;
cht=ch;
*cht=ch[i];
remplirabc(cht,occ,abc);
for(h=0;h<26;h++)
printf("%d\n",abc[h]);
}
g=0;
for(g=0;g<26;g++)
{
if(*(abc+g)!=0)
printf("%d foi la lettre '%c'",*(abc+g),char(g+'A'));
}
}


void remplirabc(char* chr,int occ1,int* abcd)

{
char min, maj;
int j;
j=0;
while((j<26)&&(*(abcd+j)==0))
{
for(min='a',maj='A';min<='z',maj<='Z';min++,maj++)
{
if(*chr==min)
{
j=(*chr-'a');
abcd[j]=occ1;
}

else if(*chr==maj)
{
j=int(*chr-'A');
abcd[j]=occ1;
}
}
j++;
}
}

3 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
23 mai 2010 à 21:51
Reprenons ce que j'avais mis hier.

void occurences(char *ptxt, unsigned int *p256tab)
{
  int i;
  for(i 255; i > 0; i--) p256tab[i] 0; // TOUT A ZERO
  while(i = *ptxt) { // REMPLISSAGE
    p256tab[i]++;
    ptxt++;
  }
}

// CODE APPELANT
int tab[256], i; 
occurences("youpi ma chaine", tab);
for(i = 255; i > 0; i--) {
  if(tab[i]) {
    // printf de i (en char) + ESPACE + tab[i] (en int)
  }
}


Que faut-il de plus ???


ciao...
BruNews, MVP VC++
3
fiorellafatma Messages postés 6 Date d'inscription mardi 18 mai 2010 Statut Membre Dernière intervention 23 mai 2010
23 mai 2010 à 22:02
salut à tous
mais l'affichage doit se faire comme je l'ai préciser en haut
0
fiorellafatma Messages postés 6 Date d'inscription mardi 18 mai 2010 Statut Membre Dernière intervention 23 mai 2010
23 mai 2010 à 22:55
salut à tous
merci j'ai compris
0
Rejoignez-nous