voila un ptit exemple de code ... avec dictionnaire
#include <iostream>
class n_dico
{
public:
char lettre;
int nb_occurence;
n_dico * suiv[256];
n_dico(char l)
{
lettre = l;
nb_occurence = 0;
for(int i=0;i<256;i++)
suiv[i] = NULL;
}
void inc()
{
nb_occurence++;
}
}base(' ');
char * ajoute(const char *mot)
{
char *let = (char*)mot;
n_dico * cur = &base;
do
{
char c = *let;
if(c<='Z'&&c>='A')
c = c - ('A' + 'a');
if(cur->suiv[*let]==NULL)
cur->suiv[*let] = new n_dico(*let);
cur = cur->suiv[*let];
let++;
}
while((*let<='z'&&*let>='a')||(*let<='Z'&&*let>='A'));
cur->inc();
return let;
}
int nb_occ(char *mot,n_dico *cur)
{
if(cur->suiv[mot[0]])
return nb_occ(&mot[1],cur->suiv[mot[0]]);
return cur->nb_occurence;
}
void parse_texte(char *txt)
{
do
{
if((*txt<='z'&&*txt>='a')||(*txt<='Z'&&*txt>='A'))
txt = ajoute(txt);
txt++;
}
while(*(txt-1)!='\0');
}
void affiche(n_dico *cur,char base[],int id)
{
base[id] = cur->lettre;
base[id+1] = '\0';
if(cur->nb_occurence)
printf("%s %d\r\n",base,cur->nb_occurence);
for(int i=0;i<256;i++)
if(cur->suiv[i])
affiche(cur->suiv[i],base,id+1);
}
int main()
{
parse_texte("aimer ce n'est pas se regarder l'un l'autre, c'est regarder ensemble, dans la même direction!");
char mess[200];
affiche(&base,mess,0);
return 0;
}
Louis
