Compte les occurrences de chaque lettres
Source / Exemple :
#include <stdio.h>
#include <conio.h>
// rempli les 'size' entiers du 'tab' avec le nombre 'nb'
void Remplir(int *tab,int size,int nb)
{
while(size)
{
// on remplie
// entier suivant
tab ++;
size --;
}
}
// compte les nombre d'occurrence de chaque
// caractere d'une chaine y compris le dernier '\0'
// Cette fonction retourne le nombre de caractere
int Calcul(char *chaine,int *compteur)
{
int i = 0;
// on efface le tableau.
Remplir(compteur,256,0);
while(*chaine != '\0')
{
// *chaine vaut son code ascii
// donc son rang dans la tableau 'compteur'
compteur[(*chaine)] ++;
// caractere suivant;
chaine ++;
i ++;
}
// on compte au moins le '\0' final
// '\0' a pour code 0 :
// on fait '++', met en realite il ne peut valoir avant
// que zero, sinon on serait deja ici !
compteur[0] ++;
return i;
}
int main(int argc,char **argv)
{
char chaine[256];
int compteur[256];
char *p;
do
{
int nbCaractere;
char QuelleCaractere[256];
// pointeur sur le tableau 'QuelleCaractere'
char *pQuelleCaractere = QuelleCaractere;
// on rentre la chaine
printf("Veuillez rentrer un chaine de caractere :\n");
p = gets(chaine);
// on cacul les occurrences
nbCaractere = Calcul(chaine,compteur);
printf("Cette chaine a %d caractere(s)\n",nbCaractere);
// on demande une nouvelle chaine
// des caracteres don on veut savoir l'occurence
printf("Quelles occurrences de quels caracteres ?\n");
gets(QuelleCaractere);
// resulats
printf("Lettre : Occurrence(s)\n");
printf("----------------------\n");
while(*pQuelleCaractere != '\0')
{
// on affiche
if(compteur[*pQuelleCaractere] >= 0)
{
printf("'%c' : %d\n",*pQuelleCaractere,compteur[*pQuelleCaractere]);
}
// on dit que on a deja ecrit cette lettre
compteur[*pQuelleCaractere] = -1;
// caractere suivant :
pQuelleCaractere ++;
}
printf("----------------------\n");
// on quitte ?
printf("'q' pour quitter\n");
}while(getch() != (int)'q');
return 0;
}
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
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 et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.