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

Scheme Discussion :

Affichage d'arbre binaire


Sujet :

Scheme

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 47
    Points : 27
    Points
    27
    Par défaut Affichage d'arbre binaire
    Bonjour,

    Cela fait longtemps que je ne vous ai pas sollicité !! Pouvez-vous m'aider SVP car je me casse la tête depuis une semaine pour afficher un arbre binaire avec reduce et map. J'ai pris un exercice sur un livre Scheme que j'ai essayé d'adapter à mon problème.
    Est-ce que c'est ma logique générale qui est fausse ou le mauvais emploi de la combinaison reduce-map ? J'ai fait je ne sais combien de tests dans tous les sens, rien à faire.
    Bonnes Pâques

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    ;; ab-vide? : ArbreBinaire (alpha) -> bool
    ;;; (ab-vide? B) rend vrai ssi B est un arbre vide et faux sinon
    (define (ab-vide? B)
      (not (ab-noeud? B)))   ;;; ab-noeud? vrai si B non vide donc avec Not, vrai si vide
    
    ;;; paragraphe : LISTE[Ligne] -> Paragraphe
    ;;; (paragraphe L) rend le paragraphe formé des lignes de la liste L
    
    (define (paragraphe L)
      (if (pair? L)
          (string-append (car L) (paragraphe (cdr L)))
          ""))
    
    
    (define (->string e)
       (cond ((number? e) (number->string e))
             ((symbol? e) (symbol->string e))
             (else e)))
    
    ;;; ab-B2 : -> ArbreBinaire (string)
    ;;; (ab-B2) rend l'arbre B2
    (define (ab-B2)
      (let* ((B1 (ab-noeud "f" (ab-vide) (ab-vide)))
             (B2 (ab-noeud "g" (ab-vide) (ab-vide)))
             (B1-1 (ab-noeud "c" (ab-vide) (ab-vide)))
             (B3 (ab-noeud "e" B2 (ab-vide)))
             (B4 (ab-noeud "d" B3 B1))
             (B5 (ab-noeud "b" B1-1 B4)))
        (ab-noeud "a" B5 (ab-vide))))
    
    (define (ab-affichage B)
      
      ;; aff-arbre : ligne ->Ligne
      ;; (aff-arbre) rend la ligne obtenue en ajoutant un tiret devant "ligne"
      (define (aff-arbre pref B)
        (let ((pref2 (string-append pref "-")))
        (define (aff-arbre-pref2 B) 
          (aff-arbre pref2 B))
      ;; expression de (ab-affichage B):
      (if (ab-vide? B)
          (paragraphe '("vide"))
               ; expression de (aff-arbre-pref B)
          (string-append (string-append pref (->string (ab-etiquette B)))
                          (reduce string-append (paragraphe '())         
                                   (map aff-arbre-pref2 (ab-gauche B)))))))
                                     
    (aff-arbre "" B))
    
    (trace ab-affichage) (ab-affichage (ab-B2))

  2. #2
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Bonjour

    Avez-vous acces au code de la fonction ab-noeud ? On peut essayer de la simuler mais peut-être est-elle particulière ?
    Quelle construction/liste renvoie l'appel (ab-noeud "f" (ab-vide) (ab-vide)) ?
    Pour pouvoir répondre, il faut que je sache la réponse à cette question.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

Discussions similaires

  1. Affichage d'une chaine d'un arbre binaire
    Par scherif dans le forum Débuter
    Réponses: 2
    Dernier message: 14/01/2014, 10h28
  2. Affichage d'arbre Binaire sur console
    Par taktouk2010 dans le forum C
    Réponses: 3
    Dernier message: 20/06/2010, 01h38
  3. Afficher un arbre binaire avec sa structure
    Par PhoneKilleR dans le forum C
    Réponses: 7
    Dernier message: 24/04/2008, 00h24
  4. Arbre binaire
    Par Heaven dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 02/02/2004, 20h01
  5. [LG]probleme de creation arbre binaire
    Par jsaviola dans le forum Langage
    Réponses: 2
    Dernier message: 06/01/2004, 21h57

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