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 14/04/2011, 23h23   #1
debmaths
Candidat au titre de Membre du Club
 
MONTANERA
Inscription : janvier 2011
Messages : 47
Détails du profil
Informations personnelles :
Nom : MONTANERA

Informations forums :
Inscription : janvier 2011
Messages : 47
Points : 14
Points : 14
Par défaut Arbres binaires

J'arrive à la fin de mon cours et je me trouve sec devant 2 problèmes sur les arbres binaires. Je n'ai aucune hypothèse et le ou les erreurs doivent être énormes:
-- 1er problème. Impossible de tester la présence ou d'une feuille
La réponse est n(importe quoi !!!!

Code :
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
;;; 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))))

;;; ab-B1 : --> ArbreBinaire (nat)
;;; (ab-B1) rend l'arbre B1
(define (ab-B1)
  (let* ((B1 (ab-noeud 44 (ab-vide) (ab-vide)))
         (B2 (ab-noeud 36 (ab-vide) (ab-vide)))
         (B1-2 (ab-noeud 154 (ab-vide) (ab-vide)))
         (B2-2 (ab-noeud 22 (ab-vide) (ab-vide)))
         (B3 (ab-noeud 2 B1 (ab-vide)))
         (B4 (ab-noeud 2 B2-2 B2))
         (B5 (ab-noeud 15 (ab-vide) B1-2))
         (B6 (ab-noeud 99 B5 B3)))
    (ab-noeud 1 B4 B6)))

;;; ab-feuille? : AbreBinaire (alpha) -> bool
;;; (ab-feuille? B) rend vrai ssi B est une feuille
    
(define (ab-feuille? B)                 ;;; vrai si B est une feuille
    (and (not (pair? (ab-gauche B)))  ;;; ab-gauche vide
         (not (pair? (ab-droit B))))) ;;; ab-droit vide
    
  (ab-feuille? (ab-B1))
; (ab-feuille? (ab-noeud "e" "g" (ab-vide)))


---2ème problème : impossible de créer un arbre binaire

(define (ab-vide? B)
  (not (pair? B)))


;;; Liste (élèmentsquelconques ) --> liste ( etiq , arbre vide gauche, noeud à droite)
;;; si liste vide arbre vide 
  
  (define (liste2arbre L)
     (if (and (pair? L) (pair? (cdr L)) )
       (let* ((a-etiquette (car L))
             (a-droit (cadr L))
             (k (liste2arbre (cdr L) )))
       (cons (ab-noeud a-etiquette () a-droit) k)) 
     (list (ab-noeud (car L) () ()))))
  
  (define (xxxx L)
    (let ((p (liste2arbre L)))
      
  (define (ab-nombre-noeuds x)     
  (if (ab-vide? x)
      0
      (+ 1 (ab-nombre-noeuds (ab-gauche x))
         (ab-nombre-noeuds (ab-droit x)))))
      
  (ab-nombre-noeuds p)))
  
 (trace xxxx) (trace liste2arbre)  (xxxx (list "1" "2" "3"))

;;; REPONSE :  procedure application: expected procedure, given: #<procedure:self> #<procedure:self> #<procedure:self>); arguments were: get-left
Pouvez-vous m'aider SVP car là je n'ai aucune hypothèse de recherche. Merci d'avance.
debmaths est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 04h54.


 
 
 
 
Partenaires

Hébergement Web