Tom's Guide > Forum > Programmation > Arbre n-aire, problemes de codes

Arbre n-aire, problemes de codes

Forum Programmation : Arbre n-aire, problemes de codes

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

bonjour à tous,
j'aurais besoin d'aide pour creer un arbre n-aire afin d'implementer un dictionnaire de mot car malheureusement, mon code ne fonctionne pas à l'execution .
J'apprécierai un peu d'aide afin de pouvoir corriger cette erreur
Je vous remercie d'avance en vous souhaitant un bon moment dans l'attente de vos réponses.



Code :
  1. [/c*de]unit Unit1;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  5.   Dialogs, StdCtrls;
  6. type
  7.   TForm1 = class(TForm)
  8.     Memo1: TMemo;
  9.     procedure FormCreate(Sender: TObject);
  10.   private
  11.     { Déclarations privées }
  12.   public
  13.     { Déclarations publiques }
  14.   end;
  15. type
  16.         tree = ^Noeud;
  17.         Noeud = record
  18.                 Fils    : array['A'..'Z'] of tree;  //liste de fils
  19.                
  20.                 Lettre  : char ;      // lettre contenue dans ce noeud de l'arbre
  21.                 Entier  : boolean;    //flag indiquant si le mot est entier
  22.                 end; { Noeud }
  23. var
  24.   Form1: TForm1;
  25.   arbre,tete,courant:tree;
  26. implementation
  27. {$R *.dfm}
  28. procedure createtree(a:tree);  //construit les feuilles de l'arbre
  29. var c : char ;
  30. begin
  31. new(a);
  32. for c:='A' to 'Z' do
  33. a^.Fils[c]:=nil ;
  34. a^.Lettre:=#0 ;
  35. a^.Entier:=false ;
  36. end ;
  37. procedure createarbre(var tete : tree) ;
  38. begin
  39. tete:=nil;
  40. end ;
  41. procedure rajouter_mot(LeMot : string) ;
  42. var lettre : char ;
  43. var temp : tree;
  44. begin
  45. if LeMot='' then
  46.   begin
  47.   courant^.Entier:=true;
  48.   exit ;
  49.   end;
  50. lettre:=LeMot[1] ;
  51. if courant^.fils[lettre]<>nil then  // si la lettre existe déjà
  52.   courant:=courant^.fils[lettre]  // alors on se positionne sur la lettre suivante
  53. else  // sinon il faut créer cette lettre dans l'arbre
  54.   begin
  55.   createtree(courant^.fils[lettre]) ;
  56.   courant:=courant^.fils[lettre] ;
  57.   courant^.lettre:=lettre ;  // la lettre est maintenant dans l'arbre
  58.   end ;
  59. delete(LeMot,1,1) ;  // on efface la lettre du mot puisqu'elle est déjà dans l'arbre
  60. rajouter_mot(LeMot) ; // et on rajoute le reste
  61. end ;
  62. procedure chargerarbre(NomFic : string) ;
  63. var  s,chemin : string ;
  64.       f : textfile ;
  65. begin
  66. // chargement du dico
  67. chemin:=ExtractFilePath(Application.ExeName); {le chemin de l'appli, AVEC l'antislash final }
  68. assignFile(f,chemin+nomFic) ;
  69. reset(f) ;
  70. repeat
  71.     readln(f,s) ;
  72.     courant:=tete ;  // on se positionne en tête de l'arbre
  73.     rajouter_mot(s) ;  // et on rajoute le mot
  74. until eof(f) ;
  75. closeFile(f) ;
  76. end ;
  77. procedure TForm1.FormCreate(Sender: TObject);
  78. begin
  79. createarbre(arbre);
  80. chargerarbre('dico1.txt') ;
  81. end;
  82. end.


Message édité par la_star160 le 12-01-2009 à 00:06:20
Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

Merci d'utiliser le bbcode [code][/c*de] afin de rendre ton code plus lisible.

------------------------------ 20minutes.fr, l'information en continu.
Répondre à SiM07
Tom's Guide > Forum > Programmation > Arbre n-aire, problemes de codes
Aller à :

Il y a 1677 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens