Mot et lettre

Fermé
firas scofield Messages postés 14 Date d'inscription dimanche 30 mars 2014 Statut Membre Dernière intervention 5 novembre 2016 - 28 nov. 2015 à 19:15
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 - 1 déc. 2015 à 19:24
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
28 nov. 2015 à 21:23
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 vendredi 23 décembre 2011 Statut Membre Dernière intervention 29 décembre 2015
1 déc. 2015 à 17:58
Est ce que tu peux récupérer chaque mot du dictionnaire dans une chaine ?!
0
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
1 déc. 2015 à 18:27
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 vendredi 23 décembre 2011 Statut Membre Dernière intervention 29 décembre 2015
1 déc. 2015 à 18:39
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 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié par [Dal] le 1/12/2015 à 19:25
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