Determiner le caractére le plus récurrent

Fermé
BobPro Messages postés 1 Date d'inscription dimanche 14 juillet 2013 Statut Membre Dernière intervention 14 juillet 2013 - 14 juil. 2013 à 16:45
 Utilisateur anonyme - 22 juil. 2013 à 16:25
Bonjour,

Prototype : char char_plus_recurrent(char *buf);

en se basant sur ce prototype j'aimerai écrire la fonction qui permet de donner le caractère le plus récurrent dans une chaine de caractère.

Aidez-moi , je suis débutant en programmation et j'ai besoin de votre aide.
Merci d'avance.
A voir également:

1 réponse

Utilisateur anonyme
15 juil. 2013 à 09:27
salut,

le mieux est de faire un tableau à 2 dimensions, la première stockant un caractère, la seconde son nombre d'apparition. A chaque caractère lu, s'il n'est pas dans ton tableau, tu l'ajoute avec la valeur 1, et s'il existe déjà , tu incrémente la seconde dimension.
Et au final tu récupère(retourne) le caractère dont la seconde dimension à la valeur la plus élevée.

pour t'aider tu peux utiliser la fonction strlen :récupérer la taille d'une chaine => ca te permettra d'allouer assez de places dans ton tableau (pour info, une chaine se termine lorsque le caractère '\0' est lu).

naga
0
apprendreEtSeDevelopper Messages postés 65 Date d'inscription vendredi 22 juillet 2011 Statut Membre Dernière intervention 18 octobre 2013 6
22 juil. 2013 à 15:58
Salut,

Effectivement Naga t'a donné tout les outils, néanmoins tu peux optimiser la structure de donnée.

On sait que des char sont codés de 0 à 255 donc tu peux créer un tableau de 255 caractères. Ensuite tu fais une boucle sur toute ta chaine de caractères et tu vas incrémenter la case de ton tableau par le numéro ASCII de ton caractère:
tant que la chaine n'est pas vide
si c'est pas un espace OU un retour à la ligne OU (ce que tu veux)
tableau[buff[i]]++;

Puis tu récupères la plus grande valeur dans ton tableau de 255 caractères.
0
salut !
tu peux optimiser la structure de donnée


ce n'est pas une optimisation vu que tu alloues un espace qui ne sera pas forcément nécessaire, en allouant dynamiquement tu limite l'espace mémoire qu'utilisera ton application. Dans le cas d'un tableau de 255 tu rend le dev. plus simple, pas plus optimisé ^^ (bon si c'est sur un pc qui a plusieurs Go de mémoire, c'est sûr, osef, mais si c'est sur un microcontrôleur, c'est pas la même histoire ^^)

[edit] autant pour moi le temps d'execution s'optimise ^^ /edit
0