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

débutante - 9 déc. 2015 à 21:24 - Dernière réponse :  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 ?
Afficher la suite 

5 réponses

Répondre au sujet
NHenry 14002 Messages postés vendredi 14 mars 2003Date d'inscriptionModérateurStatut 12 décembre 2017 Dernière intervention - 9 déc. 2015 à 21:35
0
Utile
Une seule question que tu airais dû te poser :
à quoi sert ton tableau v[] ?
Commenter la réponse de NHenry
0
Utile
le tableau contient les alphabets
Commenter la réponse de débutante
NHenry 14002 Messages postés vendredi 14 mars 2003Date d'inscriptionModérateurStatut 12 décembre 2017 Dernière intervention - 10 déc. 2015 à 18:36
0
Utile
Si le tableau v[] contient les lettres de l'alphabet, à quoi sert donc la ligne :
v[j]++
Commenter la réponse de NHenry
cptpingu 3766 Messages postés dimanche 12 décembre 2004Date d'inscriptionModérateurStatut 1 décembre 2017 Dernière intervention - Modifié par cptpingu le 10/12/2015 à 18:58
0
Utile
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.