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

MATLAB Discussion :

Parcour d'un arbre récursif


Sujet :

MATLAB

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 3
    Points : 4
    Points
    4
    Par défaut Parcour d'un arbre récursif
    Bonjour.
    Dans le cadre d'un projet, nous sommes amenés a stocker dans les noeuds d'un arbre (nommé srt) une position(2 coordonnées) et une forme géométrique (nommée lsr).

    Nous avons choisi la POO et avons donc crée une classe SRT, une classe Node (pour les noeuds), et diverses formes (pour l'instant je n'ai implementé qu'une classe Cercle).

    Un objet de type SRT a comme unique attribut un noeudRacine.
    Chaque objet de type Node a comme attribut :
    - un noeud parent
    - une liste d'enfants
    - une position associée
    - un lsr (une forme) associé

    Enfin, ma classe cercle dispose d'une methode contains(point) renvoyant true si le point est dans le cercle considéré et faux sinon.

    Mon objectif est de créer une méthode contains(point) pour ma classe SRT qui rendrait true si le point est dans l'un des lsr(cercles) associé à un des noeuds du srt en question

    Voila le code que j'ai implementé dans ma classe SRT :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     methods 
             function boolean = contains(obj, point)
                boolean = contains2(obj.noeudRacine, point);
             end % contains
    end % methods non static
     
    methods (Static = true)
            function boolean = contains2(noeudCourant, point)
                boolean = noeudCourant.lsr.contains(point);
                noeudsFils = noeudCourant.fils;
                nb = length(noeudsFils);
                for i=1:nb
                    boolean = boolean || contains2(noeudsFils(i), point);
                end
            end % contains2
    end % methods static

    Pour tester mon code, j'ai crée plusieurs noeuds reliés entre eux via les attributs parent et fils :
    srt
    |
    racine
    |
    fils1--------------fils2
    |
    fils11----fils12
    |
    fils111

    et enfin j'ai créé un point uniquement contenu dans fils2

    Mon problème : Lorsque j’exécute la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    >>srt.contains2(fils111,p1),srt.contains2(fils12,p1),srt.contains2(fils2,p1)
    ie avec des feuilles, ça marche : renvoie 0, 0, 1,
    mais lorsque je teste sur les autres noeuds, j'ai le message d'erreur suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    >>srt.contains2(fils1,p1)
     
    ??? Undefined function or method 'contains2' for
    input arguments of type 'Node'.
     
    Error in ==> SRT>SRT.contains2 at 46
                    boolean = boolean ||
                    contains2(noeudsFils(i), point);
    sachant que ma ligne 46 est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    boolean = boolean || contains2(noeudsFils(i), point);
    Je ne parviens pas a trouver d’où vient l'erreur.
    On dirait qu'il me reproche d'avoir mis des objets de type Node en argument de ma méthode contains2 ???!!!!
    Avez-vous une idée ?

    Merci beaucoup !

  2. #2
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    Bonjour,

    Ne devrait-il pas y avoir un srt. devant contains2?

    Citation Envoyé par masson.cle Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    boolean = boolean || srt.contains2(noeudsFils(i), point);
    Duf
    Simulink & Embedded Coder

    Au boulot : Windows 7 , MATLAB r2016b
    A la maison : ArchLinux mais pas MATLAB

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 3
    Points : 4
    Points
    4
    Par défaut c'est ça

    C'est ça...
    Je ne me rappelais plus que même dans la classe de définition de la méthode statique, il fallait absolument préciser le nom cette classe devant chaque appel de la dite méthode

    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Pb parcour d'un arbre.
    Par ptipoutche dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 08/11/2006, 17h15
  2. Réponses: 4
    Dernier message: 19/02/2006, 18h43
  3. [debutant] parcours en profondeur arbre n-aire
    Par tx dans le forum Langage
    Réponses: 1
    Dernier message: 15/02/2006, 03h56
  4. parcours d'un arbre en sql
    Par dor_boucle dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 02/02/2006, 11h10
  5. Ordre de parcours de l'arbre...
    Par Sylvain James dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 01/12/2002, 18h41

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