Nombres d'occurences de plusieurs caracteres dans une chaine de caracteres

Contenu du snippet

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

  • tab = nb;
// 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; }

A voir également

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.