begin process at 2012 05 28 05:27:12
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Algorithme

 > 

Maths

 > 

Affichage d'un arbre dynamique(en C)


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Affichage d'un arbre dynamique(en C)

samedi 26 mai 2007 à 00:31:07 | Affichage d'un arbre dynamique(en C)

marocweb

bonjour tout le monde,

j'ai un arbre déja crée en mémoire en utilisant les listes chainées et cela comme suit :

Chaque noeud point vers une liste chainée qui contient un ou plusieurs éléments selon le nombre de sous-noeuds, chaque élément point lui même sur un autre noeud... ça passe comme ça..

maintenant la focntion que je cherche doit afficher l'arbre comme suit :
Ex :

Noeud1
    Noeud2
    Noeud3
Noeud4
    Noeud5
        Noeud6
        Noeud7
    Noeud8

samedi 26 mai 2007 à 10:16:12 | Re : Affichage d'un arbre dynamique(en C)

The_Guardian

Salut,

Avec la récursion c'est pas difficile.
affichageArbre( liste L, decalage D )
pourtout element E de la liste L faire
afficher noeud(E) avec un decalage de D espaces
affichageArbre( sous-liste de E, D+2 )
 finpourtout

===
samedi 26 mai 2007 à 13:07:20 | Re : Affichage d'un arbre dynamique(en C)

marocweb

bonjour,

merci pour votre réponse ultra rapide, cependant j'ai pas bien compris.. l'utilité de la variable D ?

merci
samedi 26 mai 2007 à 13:28:08 | Re : Affichage d'un arbre dynamique(en C)

The_Guardian

RE

L'utilite de la variable D c'est d'afficher avec un decalage qui change selon le niveau dans l'arbre,  c'est plus joli si au niveau 3 y'a 6 espaces que si y'en avait aucun (sinon on voit pas la structure d'arbre)

===
samedi 26 mai 2007 à 14:49:53 | Re : Affichage d'un arbre dynamique(en C)

marocweb

C'est exactement ce que je cherche, la fonction que j'ai développé affiche uniquement l'arbre comme ça :

Noeud1
2
3
4
5
6

sans tabulation ni espace !

voila la fonction :

void affichage(dossier *P){

puts(P->nom);

if(P->racines!=NULL){

        R=P->racines;
       
        while(R!=NULL){
           
            affichage(R->pcible);
            R=R->next;
           
        }

}

}

J'ai pas réussi a integré une variable qui change selon la profondeur. pouvez vous svp me dire comment ?
voila les sctructures utilisées pour définir l'arbre et ses racines :

typedef struct rac{

struct rep *pcible;
struct rac *next;

}racine;

typedef struct rep{

char nom[30];
struct rac *racines;

}dossier;

Merci merci merci.
samedi 26 mai 2007 à 14:56:41 | Re : Affichage d'un arbre dynamique(en C)

The_Guardian

Réponse acceptée !
RE

Ajoute un parametre a ta fonction comme je l'ai fait.

Il suffit donc que tu fasses:
 void affichage(dossier * P, int n)
 puis ensuite une boucle pour faire n fois un espace

===
samedi 26 mai 2007 à 15:38:13 | Re : Affichage d'un arbre dynamique(en C)

marocweb

je l'ai déja testé mais, elle affiche l'arbre comme ca






noeud1
  noeud2
    noeud3
      noeud4
        noeud5
           noeudx

alors que noeud x doit être au même niveau que noeud1.
samedi 26 mai 2007 à 15:53:39 | Re : Affichage d'un arbre dynamique(en C)

The_Guardian

RE

colle le code STP merci que je regarde et evite d'utiliser variable globale.
dimanche 27 mai 2007 à 01:28:58 | Re : Affichage d'un arbre dynamique(en C)

marocweb

j'ai ajouté quelques modifications sur la fonction.
Maintenant elle affiche l'arbre comme ça :



Noeud1
       Noeud2
       noeud3
       noeud4
       ...

ils onts tous une tabulation avant sauf le premier noeud, voila la fonction maintenant :

void affichage(dossier *P,int d){


for(i=0;i<d;i++) printf("\t");
puts(P->nom);

if(P->racines!=NULL){

        R=P->racines;
       
        while(R!=NULL){
           
            affichage(R->pcible,d+2);
            R=R->next;
           
        }

}

}

Je l'appel dans main la premier fois comme ça : affichage(L,0)
dimanche 27 mai 2007 à 11:06:34 | Re : Affichage d'un arbre dynamique(en C)

The_Guardian

RE

OK y'a deux trucs a faire :
 - mettre les variables "i" et "R" en local dans la fonction
- s'assurer que la liste initiale est bien creee comme il faut
 sinon c'est bon

===

1 2

Cette discussion est classée dans : arbre, dynamique, affichage, noeud, suit


Répondre à ce message

Sujets en rapport avec ce message

Affichage d'une image dynamique [ par jelly ] Je cherche à afficher une image dans une boîte de dialogue, sachant que cette image ne sera pas stockée dans l'exécutable (via le .RC), mais sera dans Probleme avec mon programme en C [ par nono1307 ] Je dois faire une fonction insertion dans un arbre ternaire.Voici ce que j'ai fait :#include #include #includ Problème pointeur en c++ [ par ch3mical ] Bonjourj'ai un problème avec une partie de code , lorsque je créer mon arbre binaire jai un message d'erreur lorsque je rappel ma fonction récursive . arbre binaire [ par Alesx ] Salut à tous !!Voilà, en ce moment je bosse sur les arbres BSP et j'aurais voulu savoir si qqun parmis vous avez dans sa hotte (je sais c pas noiël ma créer une liste à partir d'un arbre [ par morganistic ] bonjour a tous!voila deux structures : une liste et un arbre.je n arrive pas a parcourir un arbre en inserant chaque noeud de l arbre dans une liste.. Affichage de texte dynamique ? [ par tintin72 ] Bonjour, J'aimerai avoir certaines confirmations au sujet de l'affichage de texte dynamique.J'ai fait un programme qui affiche dynamiquement (avec Inv Les iterateurs en c++ Help me ! [ par Saris ] Bonjour à tous,J'suis bien embèté car je capte pas grand chose au fonctionnement des itérateurs ou plutôt à l'utilité de ceux-ci dans mon projet pour Itérateurs en c++ 2 [ par Saris ] Lorsque je crée un iterateur sur un Arbre, comment puis-je faire en sorte que cet iterator point sur la racine de mon arbre?class Arbre{ private :  cl Affichage dynamique [ par esquiule ] Bonjour,je programme avec visual C++ 6.0.Je cherche à construire un formulaire dynamique.Mon formulaire au départ est constitué d'une ligne (composée problème C++ help urgent ! [ par Saris ] Voici un morceau de ma classe générique d'un arbre./****************************************************************************<


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,856 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales