Un programme en c qui affiche le nombre d’occurrences [Résolu]

-
Bonjour, je voulais écrire un programme en c qui affiche le nombres d'occurrences de chaque lettre alphabétique figurant dans la chaîne ,
j'ai essayé d'écrire ce programme

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
 int i,j,n ;
 int nb=0;
 char c;
 char ch[20];
 char v[25]={'a','b','c','d','e','f','g','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'} ;

 printf("entrer la chaine   ");
 gets(ch);
 n=strlen(ch);
 printf("le nombre total de caractéres est %d\n",n);

 for (j=0;j<=24;j++)
 { 
   c=v[j];
   for(i=0;i<n;i++)
   {
       while (v[j]==ch[i])
      {
         nb=nb+1 ;
        v[j]++;
      }
   }
    printf("%d fois la lettre %c\n" ,nb,c);   
  }
  return 1;
}


Il est exécutable mais le résultat n'est pas vrai .pouvez vous m'aider pour savoir ma faute ?
Afficher la suite 

5 réponses

Messages postés
14565
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
13 octobre 2019
136
0
Merci
Une seule question que tu airais dû te poser :
à quoi sert ton tableau v[] ?
Commenter la réponse de NHenry
0
Merci
le tableau contient les alphabets
Commenter la réponse de débutante
Messages postés
14565
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
13 octobre 2019
136
0
Merci
Si le tableau v[] contient les lettres de l'alphabet, à quoi sert donc la ligne :
v[j]++
Commenter la réponse de NHenry
Messages postés
3821
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
28 août 2019
85
0
Merci
Bonjour.

J'ai ajouté balises de code et indentation, merci de penser à le faire la prochaine fois.

Pour résoudre ton souci, tu n'as besoin que de:
  • Une chaîne de caractères d'entrée (ch[20] est correcte). Que tu liras plutôt avec scanf (gets fonctionnera aussi, mais est à éviter)
  • Il te faut un tableau d'entier de taille 25, contenant le nombre d'occurences de chaque lettre. La case 0 représentera le nombre d'occurences de 'a', la case 1 le nombre d'occurences de 'b', etc... Dans ton essai, remplir v[25] montre que tu confonds clés et valeurs.
  • Enfin, une seule boucle for suffit largement pour faire ton exercice (et il n'est pas nécessaire d'utiliser strlen, il suffit de boucler jusqu'à arriver à la fin de la chaîne que l'on détecte grâce au caractère spécial '\0' ou 0).



Améliorer votre expérience CodeS-SourceS avec ce plugin:
http://codes-sources.commentcamarche.net/forum/affich-10000111-plugin-better-cs-2#cptpingu-signature
Commenter la réponse de cptpingu
Commenter la réponse de débutante