Coincé en un prog d'occurrence en C !!

Fermé
mafia_boy Messages postés 104 Date d'inscription mercredi 9 septembre 2009 Statut Membre Dernière intervention 30 avril 2013 - 5 mars 2012 à 19:30
mafia_boy Messages postés 104 Date d'inscription mercredi 9 septembre 2009 Statut Membre Dernière intervention 30 avril 2013 - 5 mars 2012 à 21:20
Bonsoir,
Alors mon problème est dans la deuxième partie du programme, compter le nombre d'occurrence du mot dans la chaîne, ça commence à me tapper sur les nerfs :S
Programme:
"Ecrire un programme C permettant de saisir un mot et une phrase tous les deux non vides, de les convertir en majuscule, et d'afficher si le mot existe ou non dans la phrase et si oui avec quel nombre d'occurrences."

Voici mon travail :
"#include<stdio.h>
#include<conio.h>
#include<ctype.h>
#include<string.h>
int main ()
{
char c[100], t[100];
int i,nbr,l;
/* Saisir d'une phrase */
do
{printf ("donner une phrase : ");
gets (c);}
while (strlen(c)==0);

/* Saisir d'un mot */
do
{printf ("donner un mot : ");
gets (t);}
while (strlen(t)==0);

/*Convertir la phrase en Majuscule */
for (i=0;c[i];i++)
c[i]=toupper(c[i]);

/*Convertir le mot en Majuscule */
for (i=0;t[i];i++)
t[i]=toupper(t[i]);

/*L'existance d'un mot dans une phrase*/
nbr=0;

{if(strstr(c,t)==0)
{printf (" <%s> n'existe pas dans <%s> \n",t,c);}
else
{
nbr++;
printf (" <%s> existe %d dans <%s> \n",t,nbr,c);
}
}
}
"
Merci pour votre aide !



3 réponses

mafia_boy Messages postés 104 Date d'inscription mercredi 9 septembre 2009 Statut Membre Dernière intervention 30 avril 2013 1
5 mars 2012 à 20:41
up !!!
0
loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 148
5 mars 2012 à 21:14
Mais ton programme fonctionne bien... enfin disons qu'il fait ce qu'on lui demande!
Je pense que tu as oublié de faire une boucle.
J'aurais plutôt terminé le programme par:
  /*L'existence d'un mot dans une phrase*/
  nbr=0;
  char* ptr = c;
  while (ptr)
    if( (ptr = strstr(ptr,t)) )
    {
      nbr++;
      ptr += strlen(t);
    }
  if (nbr)
    printf (" <%s> existe %d fois dans <%s> \n", t, nbr, c);
  else
    printf (" <%s> n'existe pas dans <%s> \n", t, c);
  return EXIT_SUCCESS;
Enfin ce n'est que mon humble avis.
Bonne continuation.
0
mafia_boy Messages postés 104 Date d'inscription mercredi 9 septembre 2009 Statut Membre Dernière intervention 30 avril 2013 1
5 mars 2012 à 21:20
Merci bien :)
0