Un programme en c qui affiche le nombre d’occurrences

Résolu
débutante - Modifié par cptpingu le 10/12/2015 à 18:52
 débutante - 10 déc. 2015 à 19:40
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 ?

5 réponses

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
9 déc. 2015 à 21:35
Une seule question que tu airais dû te poser :
à quoi sert ton tableau v[] ?
0
le tableau contient les alphabets
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
10 déc. 2015 à 18:36
Si le tableau v[] contient les lettres de l'alphabet, à quoi sert donc la ligne :
v[j]++
0
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
Modifié par cptpingu le 10/12/2015 à 18:58
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
merci beaucoup
0
Rejoignez-nous