This repository has been archived by the owner on Mar 12, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
partie4.bak
186 lines (147 loc) · 5.05 KB
/
partie4.bak
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
#lang racket
(define L' ((("Helin" "Dylan" "29/10/1999" 2) (60 "rue Waldeck Rousseaux" 59410 "Anzin" "France") "0652274310")
(("Helin" "Steven" "30/10/1999" 1) (60 "rue Waldeck Rousseaux" 59410 "Anzin" "France") "0652274312")
(("Test" "Steven" "30/10/1999" 8) (60 "rue Waldeck e" 59410 "Anzien" "France") "0652274512")
(("Baudelet" "Conrad" "31/10/1999" 3) (23 "rue Test" 59345 "Escaudin" "France") "0652274513")))
(define Aymeric' (("Le Feyer" "Aymeric" "29/10/1999" 4) (60 "rue Waldeck Rousseaux" 59410 "Anzin" "France") "0652274310"))
(define Conrad' (("Baudelet" "Conrad" "29/10/1999" 3) (60 "rue Waldeck Rousseaux" 59410 "Anzin" "France") "0652274310"))
(define creationAdresse
(lambda (Numero Rue CP Ville Pays)
(cons Numero (cons Rue (cons CP (cons Ville Pays))))))
(define creationTelephone
(lambda (Numero)
Numero))
(define creationIdentite
(lambda (Nom Prenom Naissance ID)
(cons Nom (cons Prenom (cons Naissance ID)))))
(define creationPersonne
(lambda (Identite Adresse Tel)
(cons Identite (cons Adresse Tel))))
(define getNom
(lambda (P)
(caar P)))
(define getPrenom
(lambda (P)
(cadar P)))
(define getNaissance
(lambda (P)
(caddar P)))
(define getID
(lambda (P)
(car(cdr(cdr(cdr (car P)))))))
(define getNumeroRue
(lambda (P)
(caadr P)))
(define getTelephone
(lambda (P)
(caddr P)))
(define getVille
(lambda (P)
(car (cdr (cdr (cdr (car (cdr P))))))))
(define present
(lambda (L n)
(if (null? L)
#f
(if (= n (getID (car L)))
#t
(present (cdr L) n)))))
(define getPersonneParIndex
(lambda (L n)
(if (= n 1)
(car L)
(getPersonneParIndex(cdr L) (- n 1)))))
(define ajoutPersonne
(lambda (L P)
(if (present L (getID P))
"erreur"
(cons L P))))
(define detruirePersonne
(lambda (L P)
(if (null? L)
'()
(if (present L (getID P))
(if (= (getID (car L)) (getID P))
(detruirePersonne (cdr L) P)
(cons (car L) (detruirePersonne (cdr L) P)))
"erreur"))))
(define getPersonne
(lambda (L T P)
(listeTriee (getPersonne2 L T P))))
(define getPersonne2
(lambda (L T P)
(if (null? L)
"La base est nulle"
(if (equal? T "identifiant")
(getPersonneParIdentifiant L P 1)
(if (equal? T "nom")
(getPersonneParNom L P 1)
(if (equal? T "prenom")
(getPersonneParPrenom L P 1)
(if (equal? T "telephone")
(getPersonneParTelephone L P 1)
(if (equal? T "naissance")
(getPersonneParNaissance L P 1)
(if (equal? T "ville")
(getPersonneParVille L P 1)
"parametre inconnu")))))))))
(define getPersonneParIdentifiant
(lambda (L P n)
(if (<= n (length L))
(if (= P (getID (getPersonneParIndex L n)))
(getPersonneParIndex L n)
(getPersonneParIdentifiant L P (+ n 1)))
'())))
(define getPersonneParNom
(lambda (L P n)
(if (<= n (length L))
(if (equal? P (getNom (getPersonneParIndex L n)))
(cons (getPersonneParIndex L n) (getPersonneParNom L P (+ n 1)))
(getPersonneParNom L P (+ n 1)))
'())))
(define getPersonneParPrenom
(lambda (L P n)
(if (<= n (length L))
(if (equal? P (getPrenom (getPersonneParIndex L n)))
(cons (getPersonneParIndex L n) (getPersonneParPrenom L P (+ n 1)))
(getPersonneParPrenom L P (+ n 1)))
'())))
(define getPersonneParTelephone
(lambda (L P n)
(if (<= n (length L))
(if (equal? P (getTelephone (getPersonneParIndex L n)))
(getPersonneParIndex L n)
(getPersonneParTelephone L P (+ n 1)))
'())))
(define getPersonneParNaissance
(lambda (L P n)
(if (<= n (length L))
(if (equal? P (getNaissance (getPersonneParIndex L n)))
(cons (getPersonneParIndex L n) (getPersonneParNaissance L P (+ n 1)))
(getPersonneParNaissance L P (+ n 1)))
'())))
(define getPersonneParVille
(lambda (L P n)
(if (<= n (length L))
(if (equal? P (getVille (getPersonneParIndex L n)))
(cons (getPersonneParIndex L n) (getPersonneParVille L P (+ n 1)))
(getPersonneParVille L P (+ n 1)))
'())))
(define getAllID
(lambda (L)
(sort (getAllID2 L 1) <)))
(define getAllID2
(lambda (L i)
(if (> i (length L))
'()
(cons (getID (getPersonneParIndex L i)) (getAllID2 L (+ 1 i))))))
(define reconstruireLaListe
(lambda (L ID)
(reconstruireLaListe2 L ID 0)))
(define reconstruireLaListe2
(lambda (L ID i)
(if (> i (length ID))
'()
(cons (getPersonne2 L "identifiant" (car ID)) (reconstruireLaListe2 L (cdr ID) (+ i 1))))))
(define listeTriee
(lambda (A)
(reconstruireLaListe L (getAllID A))))