HELP !!!! Algorithme de recherche d'occurence dans une chaine [Résolu]

Signaler
Messages postés
23
Date d'inscription
vendredi 20 février 2004
Statut
Membre
Dernière intervention
1 octobre 2007
-
 vecchio56 -
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

Messages postés
1536
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
24 mai 2009
2
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)
Messages postés
1536
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
24 mai 2009
2
Par exemple, compteur['a'] contiendra le nombre de 'a', compteur[';'] le nombre de points-virgule...etc

+2(p - n)
Messages postés
23
Date d'inscription
vendredi 20 février 2004
Statut
Membre
Dernière intervention
1 octobre 2007

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
Messages postés
1536
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
24 mai 2009
2
#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)
Messages postés
23
Date d'inscription
vendredi 20 février 2004
Statut
Membre
Dernière intervention
1 octobre 2007

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
Messages postés
23
Date d'inscription
vendredi 20 février 2004
Statut
Membre
Dernière intervention
1 octobre 2007

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
Messages postés
1536
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
24 mai 2009
2
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)
Messages postés
23
Date d'inscription
vendredi 20 février 2004
Statut
Membre
Dernière intervention
1 octobre 2007

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
Messages postés
23
Date d'inscription
vendredi 20 février 2004
Statut
Membre
Dernière intervention
1 octobre 2007

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
Messages postés
1536
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
24 mai 2009
2
void nbrOccurences(char *chaine, int *compteur)
{
char *c = chaine;
while (*c) compteur[*c++]++;
}

+2(p - n)