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

- 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 

Votre réponse

5 réponses

Messages postés
14301
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
20 novembre 2018
9 déc. 2015 à 21:35
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
14301
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
20 novembre 2018
10 déc. 2015 à 18:36
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
3830
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
19 novembre 2018
Modifié par cptpingu le 10/12/2015 à 18:58
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

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.