HELP !!!! Algorithme de recherche d'occurence dans une chaine

Résolu
cs_ratp Messages postés 23 Date d'inscription vendredi 20 février 2004 Statut Membre Dernière intervention 1 octobre 2007 - 26 juil. 2005 à 09:33
 vecchio56 - 26 juil. 2005 à 21:19
hello,

je souhaiterai créer une fonction en C ANSI qui permet de rechercher et
d'afficher le nombre d'occurences dans une chaine jusqu'as '\0' .

j'ai besoin d'aide svp je suis debutant en langage C et je voudrais avancer.



merci pour tout ce qui souhaite m'aider.

RATP
A voir également:

30 réponses

cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
26 juil. 2005 à 12:54
Qu'est ce que tu veux faire au juste ? Parce qu'avec l'exemple que je t'ai donné plus haut, compteur[i] contiendra le nombre d'occurences du i-ème caractere dans le code ASCII, ce que tu veux faire je crois.

+2(p - n)
0
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
26 juil. 2005 à 12:54
Par exemple, compteur['a'] contiendra le nombre de 'a', compteur[';'] le nombre de points-virgule...etc

+2(p - n)
0
cs_ratp Messages postés 23 Date d'inscription vendredi 20 février 2004 Statut Membre Dernière intervention 1 octobre 2007
26 juil. 2005 à 13:24
j'ai l'impression que le code ne cherche pas les bonnes occurences.

par exemple quand je lui rentre le mot "de" il me trouve ef.



merci de votre aide


#include <stdio.h>





int compteur[256];



void nbrOccurences(char *chaine, int *compteur)

{

char *c = chaine;

while (*c) compteur[*c++]++;

}





void main(void)

{

char chaine[50];

int i;



printf("Veuillez saisir une phrase :\n");

scanf("%s",&chaine);



for(i=0;i<256;i++)

{

compteur[i];

nbrOccurences(chaine,compteur);

printf("%c\n",compteur[i]);

}





}


RATP
0
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
26 juil. 2005 à 13:29
#include <stdio.h>

int compteur[256];

void nbrOccurences(char *chaine, int *compteur)
{
char *c = chaine;
while (*c) compteur[*c++]++;
}

void main(void)
{
char chaine[50];
int i;

printf("Veuillez saisir une phrase :\n");
scanf("%s",chaine);

nbrOccurences(chaine,compteur);

}

+2(p - n)
0

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

Posez votre question
cs_ratp Messages postés 23 Date d'inscription vendredi 20 février 2004 Statut Membre Dernière intervention 1 octobre 2007
26 juil. 2005 à 13:37
merci pour cette reponse.



mais dans le code que tu ma donner. on ne peut pas afficher le resultat de la recherche d'occurence
RATP
0
cs_ratp Messages postés 23 Date d'inscription vendredi 20 février 2004 Statut Membre Dernière intervention 1 octobre 2007
26 juil. 2005 à 15:40
pourquoi lorsque je rentre une phrase du genre "coucou il fait bo" la
recherche d'occurence s'arrete à la barre lorqu'il y as un espacement

RATP
0
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
26 juil. 2005 à 18:59
Ton code ne peut pas fonctionner, le mien etait correct, car la tu demandes le parcours de la chaine 256 fois, donc tu auras 256 * les bons resultats. Reprends mon code et tu verras qu'il est bon.
Ensuite pour ton pb d'espace, c'est normal puis ce que tu utilises scanf qui s'arrete au premier espace rencontré, utilise fgets().

+2(p - n)
0
cs_ratp Messages postés 23 Date d'inscription vendredi 20 février 2004 Statut Membre Dernière intervention 1 octobre 2007
26 juil. 2005 à 20:19
je ne comprend pas pourquoi le code ne fonctionne pas comme je le veux.


peux tu m'aider à comprendre stp.



#include <stdio.h>

int compteur[256];



void nbrOccurences(char *chaine, int *compteur)

{

char *c = chaine;

while (*c) compteur[*c++ -'a']++;

}





void main(void)

{

char chaine[50];

int i;





printf("Veuillez saisir une phrase :\n");

gets(chaine);



nbrOccurences(chaine,compteur);



for(i=0;i<256;i++)

{

printf("%c",compteur[i]);

}







}

RATP
0
cs_ratp Messages postés 23 Date d'inscription vendredi 20 février 2004 Statut Membre Dernière intervention 1 octobre 2007
26 juil. 2005 à 21:13
je pense que le programme ci dessous est le plus adapté M.+2(p - n) de m'avoir aidé

peux tu me donner ton avis sur ce code.



#include <stdio.h>



int compteur[256];



void nbrOccurences(char *chaine, int *compteur)

{

char *c = chaine;

while (*c) compteur[*c++]++;

}





void main(void)

{

char chaine[256];

int i;





printf("Veuillez saisir une phrase :\n");

gets(chaine);



nbrOccurences(chaine,compteur);



for(i=0;i<256;i++)

{

printf("%c\t",i);

printf("%d\t",compteur[i]);

}







}

RATP
0
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
26 juil. 2005 à 21:14
void nbrOccurences(char *chaine, int *compteur)
{
char *c = chaine;
while (*c) compteur[*c++]++;
}

+2(p - n)
0