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
Utilisateur anonyme - 22 juil. 2013 à 16:25
A voir également:
- Determiner le caractére le plus récurrent
- Caractère ascii - Guide
- Caractere speciaux - Guide
- Caractère spéciaux - Guide
- Caractere speciaux mac - Guide
- Utiliser une formule pour déterminer pour quelles cellules le format sera appliqué - Guide
1 réponse
Utilisateur anonyme
15 juil. 2013 à 09:27
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
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
22 juil. 2013 à 15:58
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.
Modifié par nagashima le 22/07/2013 à 16:39
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