Rechereche d'un mot dans une phrase

Rechereche d'un mot dans une phrase - C - Programmation

Marsh Posté le 08-06-2005 à 11:58:45    

Salut,
Je dois proposer a l'utilisateur d'entrer un une phrase.
Ensuite je dois cherche si des mots qui se trouve dans une structure se situe dans la phrase.
 
Comme paramètre de la fonction j'ai un pointeur de pointeur vers l'adresse de la Liste Linéaire de la structure ou se trouve chaque mots, un pointeur de caractère sur la phrase, un int: la taille de la phrase
 
void recherche (struct Liste **pListe, char *phrase, int longueurphrase)
 
Si dans ma phrase j'ai "bonjour comment ca va?"
Et que dans ma liste j'ai "bonjour", "ca","venir", il faudrait qu'il me dise qu'il en a trouvé 2.
 
Connaissez vous un bon moyen de chercher des mots dans une phrase?

Reply

Marsh Posté le 08-06-2005 à 11:58:45   

Reply

Marsh Posté le 08-06-2005 à 12:13:52    

finch911 a écrit :

Connaissez vous un bon moyen de chercher des mots dans une phrase?


analyse syntaxique de base. Parcours de la chaine, detection d'espace (isspace()), gestion élémentaire de l'état (is-a-word/is-not-a-word)... Pas de difficulté majeure. Poste ton code.
 
Pour une saisie correcte de la chaine:
 
http://mapage.noos.fr/emdel/notes.htm#saisie
http://mapage.noos.fr/emdel/notes.htm#fichiers


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 08-06-2005 à 12:24:41    

Le problème c'est qu'il s'agit d'une liste de mot que j'ai prise depuis 2 fichier, trier...
La fonction en question est la fonction "void recherche". Je "patauge" beaucoup donc ce qui est déjà fait dans cette fontion n'est a mon avis pas correcte du tout.
 
code:
http://users.skynet.be/fa031120/LC70.c
Fichier des mots
http://users.skynet.be/fa031120/ficFixe.data
Autre fichier avec des mots
http://users.skynet.be/fa031120/ficVar.data
 
J'ai aussi un problème assez embettant. Avec les mots venant de FicVar.data j'ai des petits signe étrange après le mot.


Message édité par finch911 le 08-06-2005 à 12:26:24
Reply

Marsh Posté le 08-06-2005 à 12:25:47    

/me se tire une balle dans la tête ...

Reply

Marsh Posté le 08-06-2005 à 12:29:04    

t'es pas le seul en fait.
Je demande pas que vous fassiez me travail a ma place
Mais je demande simplement si il existe un bon algorithme connu pour rechercher des mots dans une chaine de caractère

Reply

Marsh Posté le 08-06-2005 à 12:37:20    

bah si t'arrêtais de tirer dans le pieds en ayant une mauvaise utilisation de malloc, feof, fopen, etc ...

Reply

Marsh Posté le 08-06-2005 à 13:24:28    

cad?

Reply

Marsh Posté le 08-06-2005 à 20:58:02    

man malloc
man feof
man fopen

Reply

Marsh Posté le 10-06-2005 à 09:59:23    

finch911 a écrit :

t'es pas le seul en fait.
Je demande pas que vous fassiez me travail a ma place
Mais je demande simplement si il existe un bon algorithme connu pour rechercher des mots dans une chaine de caractère


En gros:
T'as une phrase => char phrase[8000]
T'as un mot => char mot[20]
 
Tu fais une boucle avec un pointeur qui bouge dans ta phrase
=> for (pt=phrase; *pt != '\0'; pt++)
Tu compares ton pointeur avec le mot
=> if (strncmp(pt, mot, strlen(mot)) == 0)
Et voilà. Si ton mot est dans la phrase ça te le trouve.
 
Quand tu veux blinder ton truc, tu évites de mettre "20" et "8000" mais tu utilises plutôt de l'allocation dynamique pour être certain que tes variables ont assez de mémoire pour stocker la phrase et/ou le mot.


Message édité par Sve@r le 10-06-2005 à 10:01:30
Reply

Marsh Posté le 10-06-2005 à 10:02:39    

Pas terrible parceque ton algo trouvera "comment" si j'écris "commentaire"

Reply

Marsh Posté le 10-06-2005 à 10:02:39   

Reply

Marsh Posté le 10-06-2005 à 10:57:33    

Y a-t-il une raison particulière pour laquelle personne n'a conseillé d'utiliser la fonction strtok ?

Reply

Marsh Posté le 11-06-2005 à 08:06:18    

cgo2 a écrit :

Pas terrible parceque ton algo trouvera "comment" si j'écris "commentaire"


 
Ah oui, exact !!!  :??:  


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 11-06-2005 à 08:07:16    

phnatomass a écrit :

Y a-t-il une raison particulière pour laquelle personne n'a conseillé d'utiliser la fonction strtok ?


 
Ptet paske personne ne sait s'en servir... :D


Message édité par Sve@r le 11-06-2005 à 08:31:26

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 11-06-2005 à 10:12:11    

phnatomass a écrit :

Y a-t-il une raison particulière pour laquelle personne n'a conseillé d'utiliser la fonction strtok ?


 
plusieurs même, extrait du man :

       Évitez  au  maximum  d'utiliser  cette fonction. Sinon, prenez note des
       informations suivantes :
 
              Cette fonction modifie son premier argument.
 
              Les caractères de séparation sont surchargés, leur identité  est
              donc perdue.
 
              Cette  fonction  ne  doit  pas être invoquée sur une chaîne con-
              stante.
 
              La fonction strtok() utilise un buffer statique  et  n'est  donc
              pas sûre dans un contexte multithread. Dans ce cas il vaut mieux
              utiliser strtok_r().

Reply

Marsh Posté le 11-06-2005 à 15:48:26    

Taz a écrit :

man malloc
man feof
man fopen


 

C:\>man malloc
'man' n'est pas reconnu en tant que commande interne
ou externe, un programme exécutable ou un fichier de commandes.


 
essayes encore [:itm]

Reply

Marsh Posté le 11-06-2005 à 15:53:15    

ToxicAvenger a écrit :

C:\>man malloc
'man' n'est pas reconnu en tant que commande interne
ou externe, un programme exécutable ou un fichier de commandes.


 
essayes encore [:itm]


tu mérites le ban [:pingouino]


---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 11-06-2005 à 18:48:47    

KangOl a écrit :

tu mérites le ban [:pingouino]


 
tiens donc, et pourquoi ca ? De plus demande de ban = ban non ?

Reply

Marsh Posté le 11-06-2005 à 19:37:16    

finch911 a écrit :


[...]
http://users.skynet.be/fa031120/ficVar.data
 
J'ai aussi un problème assez embettant. Avec les mots venant de FicVar.data j'ai des petits signe étrange après le mot.


 
étrange...
 
<end of transmission><null><acknowledge><null>Donald<acknowledge><null>Mickey<enquiry><null>Daisy<enquiry><null>Pluto
 
c'est un message subliminal pour ne pas utiliser strtok et bsearch

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed