Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1619 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Vérifier présence d'un mot dans une phrase

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Vérifier présence d'un mot dans une phrase

n°2077376
kira69007
Posté le 20-05-2011 à 15:03:22  profilanswer
 

Hello tout le monde, je suis nouveau sur le forum et je viens vous demander un peu d'aide.
Voilà je sors d'examen d'informatique et un exercice reste sans solution malgré des essais ultérieurs.
Je dois faire une programmation en C.
Faire saisir une phrase et un mot à l'utilisateur puis déterminer si le mot apparait dans la phrase.
 
Je bloque complètement la dessus.
 
Quelqu'un peut il m'aider parce que j'ai pas envie d'arriver en septembre en ayant pas pu résoudre ce problème?
 
Pour info, je peux utiliser toutes les fonctions des librairies des chaines de caractères. Je pensais utiliser des pointeurs...
 
Merci pour votre aide.

mood
Publicité
Posté le 20-05-2011 à 15:03:22  profilanswer
 

n°2077382
shaoyin
Posté le 20-05-2011 à 15:18:41  profilanswer
 

Ben... Je vois pas où est la difficulté...
La fonction "strstr" te fait pratiquement tout le boulot.

n°2077431
kira69007
Posté le 20-05-2011 à 18:40:29  profilanswer
 

Ben le souci c'est que l'on a pas vu cette fonction donc je me verrai mal l'utiliser... Finalement il y a peut être que les pointeurs mais là je galère... Quelqu'un peut m'aider sur ce point?

n°2077451
kira69007
Posté le 21-05-2011 à 00:47:21  profilanswer
 

Cette fonction strstr, elle s'utilise en sous programme? Et si je désire compter le nombre d’occurrences du mot, je peux ajouter un compteur ou non?

n°2077477
WiiDS
20 titres en GC, 0 abandon, 0 DQ
Posté le 21-05-2011 à 14:04:57  profilanswer
 

Fais un coup de Google et lis le manuel de la fonction strstr ...
 
Il ne faut pas attendre les explications d'une personne dès que tu utilises une fonction que tu ne connais pas, sinon t'es bien mal barré :/


---------------
"I can cry like Roger. It's just a shame I can't play like him" - Andy Murray, 2010
n°2077481
kira69007
Posté le 21-05-2011 à 14:22:07  profilanswer
 

Voilà ce que j'ai fait mais sans cette fonction...
J'ai une syntaxe error before else... Je ne vois pas....
 
 

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. int main(int argc, char *argv[])
  5. {
  6. char Phrase[500],Mot[20];
  7. int P,M,Cpt;
  8. Cpt=P=M=0;
  9. puts("Entrez une phrase" );
  10. gets(Phrase);
  11. puts("Entrez le mot a rechercher" );
  12. gets(Mot);
  13. while(Phrase[P]!='\0'){
  14.       while(Phrase[P]!=Mot[M]){
  15.                           P++;}
  16.             else{
  17.           for(M=0;M=='\0';M++){
  18.                    if(Phrase[P]=Mot[M]){
  19.                      (P++);}
  20.                                                              if(M=='\0'){
  21.                                                               Cpt=Cpt+1;}
  22.                                 }
  23.                                      }
  24.                              }
  25.            }
  26.            }
  27. printf("/nIl y a %d fois le mot %s dans la phrase.\n",Cpt,Mot);
  28. system("PAUSE" );
  29. return 0;
  30. }


Message édité par gilou le 21-05-2011 à 15:14:55
n°2077482
kira69007
Posté le 21-05-2011 à 14:24:12  profilanswer
 

J'ai des accolades fermantes en trop lol désolé

n°2077485
gilou
Modérateur
Modzilla
Posté le 21-05-2011 à 15:31:58  profilanswer
 

Déja, il faut remplacer les appels a gets (utilisation interdite à tout jamais) par des appels à fgets

Code :
  1. #include <stdlib.h>
  2. #include <string.h>
  3. int main(int argc, char *argv[])
  4. {
  5.     char Phrase[500],Mot[20];
  6.     int P,M,Cpt;
  7.     Cpt=P=M=0;
  8.     puts("Entrez une phrase" );
  9.     // gets(Phrase);
  10.     fgets(Phrase, 500, stdin);
  11.     puts("Entrez le mot a rechercher" );
  12.     //gets(Mot);
  13.     fgets(Mot, 20, stdin);
  14.     while(Phrase[P]){
  15. while(Phrase[P] != Mot[M]){
  16.     P++;
  17. }
  18. else {
  19.     for(M=0;M=='\0';M++){
  20.  if(Phrase[P]=Mot[M]){
  21.      P++;
  22.  }
  23.  if(M=='\0'){
  24.      Cpt=Cpt+1;
  25.  }
  26.     }
  27. }
  28.     }
  29.     printf("\nIl y a %d fois le mot %s dans la phrase.\n", Cpt, Mot);
  30.     system("PAUSE" );
  31.     return 0;
  32. }


d'autre part, ton code contient un while..else, truc inconnu en C

Citation :

while(Phrase[P]!=Mot[M]){
                          P++;}
            else{


Enfin, l'utilisation de strncmp pourrait être un plus... (il serait étonnant que tu n'aies pas vu cette fonction et sa soeur strcmp)
Dernière remarque, c'est toujours mieux de faire ++P; que P++; quand on fait une simple incrémentation.
A+,


Message édité par gilou le 21-05-2011 à 15:35:55

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2077498
kira69007
Posté le 21-05-2011 à 18:36:50  profilanswer
 

Ok merci pour tout. Oui j'ai vu ces fonctions pas de souci. Par contre je connaissais pas ++P... Ca change quoi par rapport à P++
Merci pour tout ca marche enfin en tout cas.

n°2077505
gilou
Modérateur
Modzilla
Posté le 21-05-2011 à 21:07:52  profilanswer
 

++P;
1) On incrémente P
2) On évalue l'assertion avec la valeur de P
 
P++;
1) On créé une variable temporaire avec pour valeur celle de P
2) On incrémente P
3) On évalue l'assertion avec la valeur de la variable temporaire
 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
mood
Publicité
Posté le 21-05-2011 à 21:07:52  profilanswer
 

n°2077600
kira69007
Posté le 22-05-2011 à 23:44:15  profilanswer
 

Ok merci pour tout sympa d'avoir pris du temps pour les réponses!


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Vérifier présence d'un mot dans une phrase

 

Sujets relatifs
Verifier l'existance d'une popupIndex d'annuaire : Vérifier que la première lettre existe dans un nom
[SetupProject] Comment tester la présence du SP1 d'office 2007 ?[Débutant en HTML]Qui pourrait vérifier mon code svp?
verifier si champ videverifier que le flux est bien chiffrer entre client et serveur
vérifier si Outlook est lancéVerifier Document ouvert
comment verifier existence valeur dans array sans passer par foreach? 
Plus de sujets relatifs à : Vérifier présence d'un mot dans une phrase


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR