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 ?
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).