C Racine commune - C - Programmation
Marsh Posté le 18-04-2016 à 13:57:18
Si tu veux de l'aide c'est toujours bien de faciliter la tâche aux gens en donnant un exemple complet et compilable.
Code :
|
Certes, c'est des choses faciles à corriger, mais bon...
Ceci étant, les signed/unsigned char c'est pour des nombres, pour des caractères on utilise simplement char. Pourquoi tu as mis un cast void* dans l'appel de memset()? Et pour strlen() si tu déclares ton MyRoot simplement comme char[] pas besoin de cast non plus (testé avec GCC 4.7.2 -Wall).
Marsh Posté le 18-04-2016 à 20:47:54
Bon, je m'ennuais, c'est ce genre de truc dont tu as besoin? A completer...
Code :
|
Marsh Posté le 19-04-2016 à 23:09:35
rat de combat a écrit : Bon, je m'ennuais, c'est ce genre de truc dont tu as besoin? A completer...
|
Bonsoir,
Merci pour votre réponse et désolé pour le programme qui ne compile pas, j'ai fait un copier-coller brutal.
Effectivement votre code marche cependant je pense que l'analyse de mon problème n'est pas la bonne.
Mon besoin est de pouvoir isoler des termes afin de définir une racine commune
Par exemple; j'ai les mots suivants classés de façon alphabetique donc sans doublon:
- adverb
- adverbial
- adverbially
- adversary
- adverse
- adversity
Le résultat que je souhaite obtenir aprés le passage de ma fonction est le suivant:
- adverb car adverb, adverbial et adverbially ont pour racine commune seulement adverb
- advers car adversary, adverse et adversity ont pour racine commune seulement advers
C'est là que je commence à bloquer, je ne sais pas comment procéder soit je parcours chaque mot lettre par lettre: la 1ere lettre, la 2e lettre et la 3e lettre et j'isole ...
J'ai repris votre programme et en modifiant les mot1, mot2 en les liant à un tableau contenant mes exemples ... mais sans succès
Marsh Posté le 19-04-2016 à 23:10:38
rat de combat a écrit : Bon, je m'ennuais, c'est ce genre de truc dont tu as besoin? A completer...
|
Bonsoir,
Merci pour votre réponse et désolé pour le programme qui ne compile pas, j'ai fait un copier-coller brutal.
Effectivement votre code marche cependant je pense que l'analyse de mon problème n'est pas la bonne.
Mon besoin est de pouvoir isoler des termes afin de définir une racine commune
Par exemple; j'ai les mots suivants classés de façon alphabetique donc sans doublon:
- adverb
- adverbial
- adverbially
- adversary
- adverse
- adversity
Le résultat que je souhaite obtenir aprés le passage de ma fonction est le suivant:
- adverb car adverb, adverbial et adverbially ont pour racine commune seulement adverb
- advers car adversary, adverse et adversity ont pour racine commune seulement advers
C'est là que je commence à bloquer, je ne sais pas comment procéder soit je parcours chaque mot lettre par lettre: la 1ere lettre, la 2e lettre et la 3e lettre et j'isole ...
J'ai repris votre programme et en modifiant les mot1, mot2 en les liant à un tableau contenant mes exemples ... mais sans succès
Marsh Posté le 20-04-2016 à 10:22:20
Je fais ce genre de chose avec un arbre n-aire. (eg: http://www.chambily.com/recursivite/chap_VII_4.htm )
Bon ça peut sembler énorme à mettre en place pour ce que tu veux faire, mais c'est très puissant!
Marsh Posté le 20-04-2016 à 10:27:42
Certes, mais c'est pas ça qui va donner les racines. Il lui faut une heuristique pour déterminer quand on considère que la terminaison d'un mot ne fait plus partie de la racine commune, et pour le moment, je n'ai pas vu qu'il en propose une.
A+,
Marsh Posté le 20-04-2016 à 11:58:42
Effectivement, il faut un critère.
Je m'ennuyais donc j'ai fait un exemple en python
Code :
|
Résultat:
Code :
|
Marsh Posté le 20-04-2016 à 14:30:02
sined40 a écrit : Effectivement votre code marche cependant je pense que l'analyse de mon problème n'est pas la bonne. |
Je me disais bien que c'était trop facile... Désolé, je sèche...
Marsh Posté le 17-04-2016 à 23:28:19
Bonjour,
Je suis à la recherché d'une function en C ou d'un algorithme qui permettrait de garder seulement les racines communes dans une liste classé par ordre alphabetique.
J'ai essayé avec un strtok mais sans success.
Par exemple: bonjour, bonsoir => racine commune bon
Pour info: MaListe est une variable globale contenant les mots bonjour, bonsoir ... etc