IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

les étages d'un arbre


Sujet :

C

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 32
    Points : 20
    Points
    20
    Par défaut les étages d'un arbre
    bonjour a tous!
    je me demande s'il est possible de savoir a quel étage de l'arbre se trouve un opérateur ou un chiffre?si oui comment?
    je rappel mon problème principal: je veux mettre une fonction mathématique dans un arbre, j'utilise une fonction récursive...
    je me suis penché sur une autre idée, aussi comment peut-on savoir le père d'un noeud?

  2. #2
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    ça dépend de la structure de ton arbre...

    ceci peut fonctionner (selon ta modélisation) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    unsigned etage(noeud* N)
    {
       if(N == NULL || N->parent == NULL) return 0;
       return 1 + etage(N->pere);
    }
    pour la seconde question, le plus simple est de stocker un pointeur vers le noeud père dans ta structure noeud... (comme je l'ai fait pour la mienne dans la fonction que je t'ai donnée...)
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  3. #3
    Membre expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 3 958
    Points
    3 958
    Par défaut
    je me demande s'il est possible de savoir a quel étage de l'arbre se trouve un opérateur ou un chiffre
    Sans faire de fonction:
    -en ajoutant la donnée pour chaque élément de l'arbre;
    ou
    -lors du parcours de l'arbre avec d'autres fonctions incrémenter des variables.
    Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
    Mon blog : pragmateek.com

  4. #4
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 32
    Points : 20
    Points
    20
    Par défaut
    ma structure de l'arbre est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    typedef struct noeud* pnoeud;
    typedef struct noeud{
    char operateur;
    int chiffre;
    pnoeud filsgauche;
    pnoeud filsdroit;
    }tnoeud;
    donc que doije rajouter pour pouvoir obtenir N->pere?
    je voudrai savoir le pere du noeud en question pour pouvoir le tester si c'est un operateur ou un chiffre, pouvez vous m'éclairer?

  5. #5
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    Il te suffit de modifier un peu ta structure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    typedef struct noeud* pnoeud;
    typedef struct noeud{
    char operateur;
    int chiffre;
    pnoeud filsgauche;
    pnoeud filsdroit;
    pnoeud pere;
    }tnoeud;
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  6. #6
    Membre expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 3 958
    Points
    3 958
    Par défaut
    Une union serait peut être plus approprié pour gérer les donnée de l'arbre, plutôt que de les scinder en "operateur" et "chiffre".
    Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
    Mon blog : pragmateek.com

  7. #7
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 32
    Points : 20
    Points
    20
    Par défaut
    @Swoög: ok je vais essayer, a ce moment dans le programme je fais quoi pour affecter ce dernier?
    @seriousme: pouvez vous expliciter s'il vous plait

  8. #8
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    Citation Envoyé par speedcore
    @Swoög: ok je vais essayer, a ce moment dans le programme je fais quoi pour affecter ce dernier?
    quand tu intègres un noeud à l'arbre, tu affectes le noeud père...
    chaque ligne où un pointeur du noeud est affecté à un fils, il faut que le père du noeud intégré soit mis à jour...

    seriousme veut dire que quelque chose de ce style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    typedef struct noeud* pnoeud;
    typedef struct noeud{
    union { char operateur;
    int chiffre; } value;
    pnoeud filsgauche;
    pnoeud filsdroit;
    pnoeud pere;
    }tnoeud;
    serait plus approprié parce que dans ce cas, ton noeud ne peu avoir qu'un seul type de valeur (soit char, soit int)
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  9. #9
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Citation Envoyé par Swoög
    quand tu intègres un noeud à l'arbre, tu affectes le noeud père...
    chaque ligne où un pointeur du noeud est affecté à un fils, il faut que le père du noeud intégré soit mis à jour...

    seriousme veut dire que quelque chose de ce style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    typedef struct noeud* pnoeud;
    typedef struct noeud{
    union { char operateur;
    int chiffre; } value;
    pnoeud filsgauche;
    pnoeud filsdroit;
    pnoeud pere;
    }tnoeud;
    serait plus approprié parce que dans ce cas, ton noeud ne peu avoir qu'un seul type de valeur (soit char, soit int)
    Mais il faut ajouter le type du noeud :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    typedef struct noeud* pnoeud;
     typedef struct noeud{
     union { char operateur;
     int chiffre; } value;
    int type;
     pnoeud filsgauche;
     pnoeud filsdroit;
     pnoeud pere;
     }tnoeud;
    Jc

Discussions similaires

  1. Réponses: 4
    Dernier message: 12/03/2008, 11h51
  2. Itérer sur tous les éléments d'un arbre
    Par *alexandre* dans le forum Langage
    Réponses: 7
    Dernier message: 05/12/2007, 16h22
  3. Evenement sur les fils d'un arbre
    Par f.lam dans le forum WinDev
    Réponses: 4
    Dernier message: 04/04/2007, 17h26
  4. inverser les étages d'un arbre
    Par Mathusalem dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 30/05/2006, 09h49
  5. Réponses: 6
    Dernier message: 05/07/2005, 11h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo