Mot et lettre

firas scofield Messages postés 14 Date d'inscription   Statut Membre Dernière intervention   -  
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

j'ai un fichier texte qui contient un dictionnaire francais(plus de 320000 mots) , et je dois demander a l'ordinateur de generer des lettres majuscules aleatoirs (j'ai deja fait cette partie),ensuite je doit trouver tous les mots valides qu'on peut les former a partir de ces lettres , et le mots le/les plus long(s)
nb: un mot est valide si elle existe dans le dictionnaire(le fichier texte)
j'attend bien de votre aide.
j'ai etudié le langage C moins qu'un mois et on me demande de realiser ce projet

2 réponses

fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Bonjour,

Avant de parler C, il faut parler algorithmique...
A partir d'un mot, il va falloir que tu fasses des boucles (récursivement ou pas) pour former toutes les combinaisons possibles.
Ensuite, il faudra que tu regardes quelles sont les combinaisons qui sont présentes dans le dictionnaire.

On attend ta proposition (soit en C, soit en algo) pour qu'on puisse t'aider vraiment.

Cdlt,
2
92info Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
Est ce que tu peux récupérer chaque mot du dictionnaire dans une chaine ?!
0
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
Salut 92info,

Tu veux dire récupérer tous les mots et les mettre tous dans une seule chaîne, avec un caractère séparateur absent de ces mots et un seul '\0' en fin de cette (longue) chaîne C ?


Dal
0
92info Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
Non je veux dire que si les mots sont dans des chaines bien distinctes.

Par exemple pour trouver un mot commençant par t t'auras juste à mettre

if (chaine[0]=='t')
{
///Code
}
0
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
pourtant, cela aurait pu tenir debout, même si c'est loin d'être optimisé, de tout mettre dans une seule chaîne, capable d'être traitée par
strstr()
.

http://www.cplusplus.com/reference/cstring/strstr/

Bien sûr, avec ta solution, il peut optimiser la recherche, à condition de décider d'une structure de données pouvant être manipulée avec toutes ces chaînes, de se lancer dans un classement alphabétique des chaînes, de mettre en oeuvre un algorithme de recherche dychotomique, et autres joyeusetés... qui sont probablement "un peu" complexes à mettre en oeuvre pour notre ami Firas, qui n'a commencé le C que depuis 1 mois, ou ne pas optimiser du tout, et alors, je ne vois pas le gain par rapport à tout mettre dans une seule chaîne et utiliser une fonction standard du C toute faite pour rechercher ce qui doit l'être.

à condition, bien sûr qu'il ait suffisamment de mémoire pour stocker la chaîne, ce qui devrait être le cas s'il a un ordinateur pas trop ancien, vu que les 320000 mots sont en langue française, et qu'il font donc au plus 26 lettres, et donc moins de 10 Mo (ou x4 en Unicode sur 4 bytes).

:-D
0