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

  FORUM HardWare.fr
  Programmation
  C++

  [C++] Programmer un "moteur de recherche" ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++] Programmer un "moteur de recherche" ?

n°1173617
Fatal
Oblivion c'est bon, mangez-en.
Posté le 09-08-2005 à 22:53:59  profilanswer
 

Salut à tous,
 
Je ne sais pas si le titre correspond totalement au sujet mais bon on verra bien ce n´est pas grave.
 
Voila dans mon programme je voudrais ajouter une fonction de recherche mais je ne suis qu´un débutant et je ne ne connais pas toutes les notions.
 
Pour éviter de vous encombrer avec de l´inutile je ne posterai pas mon code source. Car c´est une fonction à part entière.
 
Admettons ce code :
 

Code :
  1. #include <iostream>
  2. #include <liste.h>
  3. using std::cout:
  4. using std::cin;
  5. //A cet endroit un prototype de la fonction "  Recherche" de recherche dans la liste (  liste.h).
  6. int main()
  7. {
  8. char Nom[64];
  9. char Resultat[64];
  10. cout << "Que recherchez-vous dans la liste ? "  ;
  11. cin >> Nom;
  12. cout << endl;
  13. Resultat = Recherche(Nom); //Donc il faut que la fonction Recherche retourne une valeur Char.
  14. cout << Resultat << " : etait-ce bien ce que vous cherchiez ?\n"
  15. system("PAUSE" );
  16. return 0;
  17. }


 
En fait voila je souhaiterai tout simplement savoir comment faire un fichier "liste.h" contenant des mots, composés ou non (très important !) et une fonction qui puissent rechercher dans ce fichier le mot voulu.
 
J´ai vraiment beaucoup de mal à le mettre en oeuvre. Je ne parviens pas à trouver une solution. En fait il faudrait une fonction qui compare le mot recherché à un mot de la liste et qui passe au mot suivant si le mot ne correspond pas etc...
 
J´ai pensé à strcmp(Chaine1,Chaine2) mais comment rendre ce truc plus ergonomique et plus compact (  car faire des comparaison entre chaque mot d´une liste de 300 mots par exemple imaginer le truc quoi...).
 
Aussi comment faire pour que la fonction est la capacité de me donner plus de 1 résultat ?
 
De plus comment faire des chaines avec des espaces entre les mots ?
 
Aussi question subsidiaire : Comment afficher les caractères spéciaux dans une phrase ?  
Exemple :

Code :
  1. std::cout << "Je vais à la pêche"; //Ci-contre le "à" et le "ê" en plein milieu de phrase


 
 
Merci beaucoup de vos réponses car vraiment je suis en difficulté phénoménale pour mon niveau :)

mood
Publicité
Posté le 09-08-2005 à 22:53:59  profilanswer
 

n°1173657
0x90
Posté le 10-08-2005 à 02:27:50  profilanswer
 

au hasard, préparser la liste et l'organiser en un arbre , si tu es courageux y'a la très bonne doc la dessus dans le "Sorting and Searching" de Knuth ;)
 
sinon pour qu'elle puisse te retourner plusieurs résultats, m'est-avis qu'une liste chainée de pointeurs vers les chaines trouvées serait un format potable ;)
 


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°1174528
zied3
Posté le 11-08-2005 à 13:03:18  profilanswer
 

sI J4AI BIEN COMPRIS TU VOUDRAIS AVOIR UNE STRUCTURE DANS LAQUELLE TU STOCKES DES PHRASES (MOT OU MOT COMOSOPéS) ET UNE FONCTION QUI PUISSE TE RETOURNER LE RESULTAT DE TA RECHERCHE.
SI C EST CA MOI JE TE CONSEILLE DE STOCKER tes infos dans un CStringArray (c'est un type prédéini: tableau ce CSTRING) et de passer en paramètre de ta fonction un CString, il te suffira de faire la comparaison avec chaque case de ton tableau, et si le résultat est bon, tu ajoutes cette valeur dans un nouveau CStringArray (ça sera la valeur retour de ta fonction, déclare le en tant que pointeur sur CStringArray), fais attention à "resizer" à chaque nouvel ajout dans ton tableau.
J'espère que c'est assez claire

n°1174542
_p1c0_
Posté le 11-08-2005 à 13:33:57  profilanswer
 

Et pourquoi pas un std::vector<std::string> ?? Tu peux stocker plusieurs chaînes dedans et ca marche très bien!!  
 
Sinon, l'idée de préparser les mots et de les organiser me parait bien aussi... Ou peut être déjà un tri alphabétique et plusieurs fichiers... ou trouver des catégories de recherches...

n°1176847
blackgodde​ss
vive le troll !
Posté le 16-08-2005 à 09:34:58  profilanswer
 

zied3 a écrit :

sI J4AI BIEN COMPRIS TU VOUDRAIS AVOIR UNE STRUCTURE DANS LAQUELLE TU STOCKES DES PHRASES (MOT OU MOT COMOSOPéS) ET UNE FONCTION QUI PUISSE TE RETOURNER LE RESULTAT DE TA RECHERCHE.
SI C EST CA MOI JE TE CONSEILLE DE STOCKER tes infos dans un CStringArray (c'est un type prédéini: tableau ce CSTRING) et de passer en paramètre de ta fonction un CString, il te suffira de faire la comparaison avec chaque case de ton tableau, et si le résultat est bon, tu ajoutes cette valeur dans un nouveau CStringArray (ça sera la valeur retour de ta fonction, déclare le en tant que pointeur sur CStringArray), fais attention à "resizer" à chaque nouvel ajout dans ton tableau.
J'espère que c'est assez claire


 
horreur :ouch:


---------------
-( BlackGoddess )-
n°1177085
HelloWorld
Salut tout le monde!
Posté le 16-08-2005 à 14:05:21  profilanswer
 

Oublie les char *, utilise std::string.
Avec une map tu peux associer un résultat à un mot (string).


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°1177207
bjone
Insert booze to continue
Posté le 16-08-2005 à 16:36:21  profilanswer
 

set/map/hash_map


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

  [C++] Programmer un "moteur de recherche" ?

 

Sujets relatifs
il fo etre matheu pour programmerRecherche algorithme de recherche.
[MySQL] Problème de recherche sur 3 tablesrecherche de données d'une bd via un formulaire
recherche de données d'une bd via un formulaireprogrammer jeux en C
[DOS] programmer un jeu réseauRecherche code html pour fondu ???
programmer un état sous vba access[RESOLU] Recherche d'un string dans un tableau
Plus de sujets relatifs à : [C++] Programmer un "moteur de recherche" ?


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