Accueil Ti-Gen Foire Aux Questions Chat sur le chan #tigcc sur IRC
Liste des membres Rechercher Aide
Bienvenue Invité !   Se connecter             Mes sujets   
Administrer
0 membre(s) et 1 visiteur(s) actif(s) durant les 5 dernières minutes Utilisateurs actifs : Aucun membre + 1 visiteur
Avant de poster sur le forum, il y a des régles de bases à respecter pour une bonne entente et un respect de tous.
Veuillez lire la charte du forum.
  :: Index » Forum TiZ80 » Algorithmie et optimisation » Dessiner un arbre n-aire (4 réponse(s))
./POST DE DEPART (post n°0)   Marquer comme non lu.
Onur Ecrit le: Dimanche 31 juillet 2005 à 01:22 Déconnecté(e)    Voir le profil de Onur Envoyer un email à Onur Visiter le site WEB de Onur Envoyer un message privé à Onur  


Voila. J'ai une classe Noeud. Et j'aimerais faire une fonction d'affichage en mode console (avec uniqement printf sans cout) qui affiche l'arbre. Les noeud ont entre 0 et n fils.

sur le net j'ai trouvé ca, mais cest pas en mode console:

procedure arbre.dessine(en_cours: noeud; limg, old_x, old_y: integer);
var x, y, nb: integer;
  i: char;
begin
//nb:=compter_terminaux(courant); // effet joli
  nb := compter_terminaux(en_cours);
  x := limg + (50 * nb) div 2;
  y := old_y + 80;
  if en_cours <> tete then
    with form1.image1.picture.bitmap.canvas do
    begin
      textout(x, y, en_cours.lettre);
      en_cours.x := x; en_cours.y := y;
      moveto(x, y - 5); lineto(old_x, old_y);
    end;
  for i := 'A' to 'Z' do
    if en_cours.fils[i] <> nil then
    begin
      nb := compter_terminaux(en_cours.fils[i]);
      dessine(en_cours.fils[i], limg, x, y + 20);
      limg := limg + nb * 50;
    end;
end;
Je ne veux pas faire quelque chose de bien, je cherche l'excellence:ETP Studio...


et autres projets à finir avant 2010
    
./Post n°1   Marquer comme non lu.
Link Ecrit le: Dimanche 31 juillet 2005 à 13:07 Déconnecté(e)    Voir le profil de Link Envoyer un email à Link Visiter le site WEB de Link Envoyer un message privé à Link  

Je dois avoir un truc de ce genre que j'avais fait en java, la vue était de type "arborescence de fichiers", en mode console.
Si ça peut t'intéresser...

Par contre, je ne connais aucun moyen d'afficher un arbre comme on le ferait en mode graphique (surtout pour un arbre n-aire)
    
./Post n°2   Marquer comme non lu.
Onur Ecrit le: Dimanche 31 juillet 2005 à 19:26 Déconnecté(e)    Voir le profil de Onur Envoyer un email à Onur Visiter le site WEB de Onur Envoyer un message privé à Onur  


oui ca peut m'interesser
Je ne veux pas faire quelque chose de bien, je cherche l'excellence:ETP Studio...


et autres projets à finir avant 2010
    
./Post n°3   Marquer comme non lu.
Link Ecrit le: Dimanche 31 juillet 2005 à 19:39 Déconnecté(e)    Voir le profil de Link Envoyer un email à Link Visiter le site WEB de Link Envoyer un message privé à Link  

Oké, voici http://www.isty-info.uvsq.fr/~benoit/TD02_Exo02.zip
Regarde dans les sources des classes Forme2D et Groupe, la méthode afficherRecur().

Naturellement, les caractères peuvent être changés, mais je ne connais abolument pas les codes unicode des caractères graphiques...
    
./Post n°4   Marquer comme non lu.
Onur Ecrit le: Dimanche 31 juillet 2005 à 20:51 Déconnecté(e)    Voir le profil de Onur Envoyer un email à Onur Visiter le site WEB de Onur Envoyer un message privé à Onur  


hum.. je crois que cest pas ce qu'il me faut. Voila le genre d'arbre que j'affiche:

                     +-<1 >
              +-<- >-|
              |      |      +-<0 >
              |      +-<* >-|
              |             +-<0 >
       +-<+ >-|
       |      +-<1 >
+-<& >-|
       +-<0 >

mais ca, c'est binaire, j'aimerais pouvoir afficher de la mm sorte en n-aire.

Voici le code correspondant en Ada:

--------------
   -- Afficher --
   --------------

   procedure Afficher (A : in Arbre) is

      procedure Aff (A : in Arbre;
                     S, SD, SG : in String) is
         P   : constant String           := Image_Noeud (A.I_N);
         Ind : constant String (P'Range) := (others => ' ');
      begin
         if A.N = F then
            Put_Line (S & "+-<" & P & " | " & Image_Feuille (A.I_F) & " >");
         else
            Aff (A.D,
                 SD & Ind & "     ",
                 SD & Ind & "      ",
                 SD & Ind & "     |");
            Put_Line (S & "+-<" & P & " >-|");
            Aff (A.G,
                 SG & Ind & "     ",
                 SG & Ind & "     |",
                 SG & Ind & "      ");
         end if;
      end Aff;

   begin -- Afficher
      Aff (A, "", " ", " ");
   end Afficher;

je l'ai traduit également en C, si vous voulez le voir je peux le poster.
Je ne veux pas faire quelque chose de bien, je cherche l'excellence:ETP Studio...


et autres projets à finir avant 2010
    
  :: Index » Forum TiZ80 » Algorithmie et optimisation » Dessiner un arbre n-aire (4 réponse(s))
Pages : 1/1     « [1] » »|

.Répondre à ce sujet
Les boutons de code
[B]old[I]talic[U]nderline[S]trikethrough[L]ine Flip Hori[Z]ontallyFlip [V]erticallySha[D]ow[G]low[S]poilerCode [G][C]ite
Bullet [L]istList Item [K] Link [H][E]mail[P]icture SmileysHelp
Couleurs :
Saisissez votre message
Activer les smileys
     

Forum de Ti-Gen v3.0 Copyright ©2004 by Geoffrey ANNEHEIM
Webmaster: Kevin KOFLER, Content Admins: list, Server Admins: Tyler CASSIDY and Kevin KOFLER, DNS Admin: squalyl
Page générée en 44.74ms avec 18 requetes