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

  FORUM HardWare.fr
  Programmation
  C

  Afficher dans un arbre n aire

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Afficher dans un arbre n aire

n°1299856
elbrabra
Posté le 06-02-2006 à 15:33:26  profilanswer
 

Bonjour tout le monde,
 
Voila j'ai une question en programmation C je doit realiser un arbre binaire dans lequel j'insere un dictonnaire, pour le moment pas de probleme, mais voila je doit des que je tape une chaine de chiffre telle que 2637 mettre tout les mots qui respectent ces chiffres.
Je m'explique pour la lettre "a" le champ touche de sa structure est de 2, b et c aussi à  la maniére des touche de portable.Pour la touche 6 les lettres correspondantes sont m, n et o.
Donc pour la chaine 2637 je devrai afficher :
ames
anes
bods
 
mais j'arrive qu' afficher ames
je vois pas comment lui dire de faire tous les trajets possible.
 
J'ai tout essayer et je vois vraiment pas je pense qu il va falloir le faire de maniere recursive, mais meme de cette maniere je ne vois pas.
Si quelqu'un a  une idee ce serait sympa car là je ne vois pas.
Merci d'avance


Message édité par elbrabra le 11-02-2006 à 16:29:32
mood
Publicité
Posté le 06-02-2006 à 15:33:26  profilanswer
 

n°1299958
Zavie
Test, du travail de pro !
Posté le 06-02-2006 à 17:20:15  profilanswer
 

Quelque chose comme ça :

Code :
  1. Fonction explore : (nombre, chaine, noeud)
  2.   si (premier chiffre du nombre = touche)  // Le noeud correspond
  3.     nouvelle_chaine = chaine + lettre
  4.     si (aucun fils)
  5.       si (nombre < 10)  // On vient de trouver un mot
  6.         ajouter nouvelle_chaine a la liste de mots
  7.     sinon
  8.       si (nombre > 9)
  9.         pour chaque fils
  10.           explore (nombre sans le premier chiffre, nouvelle_chaine, fils)

L'utilisation d'un arbre binaire est imposée ? Un arbre n-aire semble beaucoup plus adaptée (et moins redondante), non ? Un langage de plus haut niveau serait également plus adapté à mon avis mais ça c'est un autre débat. :-)
C'est pour faire de la prédiction de saisie sur T12/T15 ?


---------------
Viendez vous battre à Prologin \o/
n°1300021
elbrabra
Posté le 06-02-2006 à 18:16:18  profilanswer
 

Salut zavie pour le langage le C c'est en fait le langage que je maitrise le mieux donc le choix a ete vite fait.
Sinon c'est en effet fait pour une prediction de saisie de type T Q, ke systeme qui fonctionne actuellement sur les portable.
 
Sinon excuse moi mais j'ai pas tres bien compris cette partie de l'algo;

Code :
  1. si (aucun fils)     
  2.                si (nombre < 10)  // On vient de trouver un mot         
  3.                               ajouter nouvelle_chaine a la liste de mots
  4. sinon     
  5.                si (nombre > 9)       
  6.                               pour chaque fils          explore (nombre sans le premier chiffre, nouvelle_chaine, fils)


Message édité par elbrabra le 11-02-2006 à 16:28:29
n°1300166
Zavie
Test, du travail de pro !
Posté le 06-02-2006 à 21:23:56  profilanswer
 

C'est une erreur : je me basais sur la valeur du nombre, mais ça pose problème pour des mots s'écrivant avec des zéros. Il faut utiliser une chaine de caractères numériques plutôt qu'un entier.
 
L'idée est la suivante : si on arrive à un noeud terminal, ça veut dire que d'après le dictionnaire on est à la fin du mot. Si la chaine ne compte qu'un chiffre, ça colle. Si le noeud n'est pas un noeud terminal, il faut vérifier au contraire que la chaine compte au moins deux chiffres (ou alors dans le cas où il y a de la prédiction, on va explorer au delà de ce que l'utilisateur a déjà tapé, et l'algo est forcément différent). Dans ce cas, on continue le parcours en profondeur en utilisant la chaine numérique commençant au chiffre suivant.
 
(Edit : typo, paranthèses)


Message édité par Zavie le 06-02-2006 à 21:34:02

---------------
Viendez vous battre à Prologin \o/

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

  Afficher dans un arbre n aire

 

Sujets relatifs
(question débutant) Afficher du texte à partir d'un .txtphp/mysql afficher les resultat dans le désordre
[XSL-FO] Afficher sur la dernière page seulement !!afficher les groupes dans l'onglet securite en vbs
[CSS] afficher un div par dessus un autreVBA On error (Peut-on afficher l'erreur)
la suppression d'un noeud d'un arbreAfficher le contenu d'un fichier texte sur une page WEB ?
[VB.NET] Afficher un OleDbDataReader dans Datagrid ?Afficher un double
Plus de sujets relatifs à : Afficher dans un arbre n aire


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