Précédent   Forum du club des développeurs et IT Pro > Autres langages > Langages fonctionnels > Scheme
Scheme Forum d'entraide sur la programmation en langage fonctionnel Scheme
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 27/07/2011, 16h07   #1
bazoga
Candidat au titre de Membre du Club
 
almaghribi Abo trika
Inscription : novembre 2009
Messages : 58
Détails du profil
Informations personnelles :
Nom : almaghribi Abo trika

Informations forums :
Inscription : novembre 2009
Messages : 58
Points : 12
Points : 12
Par défaut Arbre bibibliographique

Bonjour,

j'ai un probleme que j'ai du mal à le résoudre et je vaudrais votre aide, il s'agit d'un arbre binaire destiné à classer les ouvrages d’une bibliographie, cet arbre (BTREE) est organisé de cette manière:
  • soit arbre vide
  • soit la donnée:
    • une clé: identifiant un livre
    • d’un nom d’auteur
    • un titre
    • deux branches, gauche et droite, qui sont des objets de type BTREE

voici le constructeur du BTREE:
Code :
1
2
3
4
5
6
7
8
9
(define (mk-btree key-0 name-0 title-0 lbr-0 rbr-0)
  ;;  STRING,STRING,STRING ,BTREE,BTREE -> BTREE
  ;;  Retourne un arbre bibliographique non vide à partir des données qui le
  ;;  composent.
  (cons key-0
	(cons name-0 
	      (cons title-0 
		     (cons lbr-0 rbr-0)))))
ainsi que deux sélecteurs:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
(define author-name
  ;;  BTREE -> STRING
  ;;  Retourne le nom de l'auteur du livre placé à la racine d'un arbre
  ;;  bibliographique non vide.
  cadr)

(define title
  ;;  BTREE -> STRING
  ;;  Retourne le titre du livre placé à la racine d'un arbre bibliographique
  ;;  non vide.
  caddr)
ma question est la suivante: la liste linéaire de tous les titres écrits par l’auteur athor-name0 :

voici ma version brute:
Code :
1
2
3
4
5
6
7
8
9
(define (titles-for-author author-name0 btree)  
  (if (empty-tree? btree)
      '()
      (if (equal? author-name0 (author-name btree))
          (cons (title btree) (cons (titles-for-author author-name0 (left-branch btree)) 
                                    (titles-for-author author-name0 (right-branch btree))))      
          (cons (titles-for-author author-name0 (left-branch btree)) 
                                    (titles-for-author author-name0 (right-branch btree))))))
cette solution me donne des résultats correctes mais avec des listes vides
bazoga est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 13h31.


 
 
 
 
Partenaires

Hébergement Web