Probleme avec DrScheme
Scheme
-
honey -
honey -
Bonjour,
Je travail avec le logiciel DrScheme...
le problème que j'ai c'est que certain fonction ne sont pas reconnus par ce logiciel, comme atom?, set-cdr! ..
je reçois le message d'erreur suivant : reference to undefined identifier: set-cdr!
d'ou vient le problème, et comment le résoudre ?
Merci et a+
Je travail avec le logiciel DrScheme...
le problème que j'ai c'est que certain fonction ne sont pas reconnus par ce logiciel, comme atom?, set-cdr! ..
je reçois le message d'erreur suivant : reference to undefined identifier: set-cdr!
d'ou vient le problème, et comment le résoudre ?
Merci et a+
1 réponse
Excuse moi, j'ai également un problème avec une programmation avec docteur scheme. le but étant de représenter un nombre fractionnaire:
Un nombre fractionnaire sera considéré comme une liste dont le car est le numérateur , le cadr le symbole / et le
caddr, le dénominateur, soit :
1/3 => structure Scheme correspondante (1 / 3)
je sais que:
(define (const_rat a b)
(list a `/ b)) est une definition qui fonctionne. mais lorsque je dois réduire un nombre, je doit me servir du pgcd que j'ai définit comme ceci:
(define (pgcd a b)
(cond ((= a 0) b)
((= b 0) a)
((< a b) (pgcd b a))
((and (< a 0) (< b 0) #t) (pgcd (* -1 a)(* -1 b)))
((and (< a 0) (> b 0) #t) (pgcd (* -1 a) b))
((and (> a 0) (< b 0) #t) (pgcd a (* -1 b)))
(else pgcd b (remainder a b))))
cette definition marche également mais lorsque je l'applique à ma définition du rationnel ainsi que la fonction permettant de placer le signe sur le numérateur:
(define (const_rat a b)
(cond ((< b 0) list (/ (* -1 a) (pgcd a b)) `/ (/ (* -1 b) (pgcd a b)))
(else (list (/ a (pgcd a b)) `/ (/ b (pgcd a b))))))
--> un message d'erreur me dit que les parties soulignées nécessitent une division par zéro qui est impossible.
Comment dois-je faire???
Un nombre fractionnaire sera considéré comme une liste dont le car est le numérateur , le cadr le symbole / et le
caddr, le dénominateur, soit :
1/3 => structure Scheme correspondante (1 / 3)
je sais que:
(define (const_rat a b)
(list a `/ b)) est une definition qui fonctionne. mais lorsque je dois réduire un nombre, je doit me servir du pgcd que j'ai définit comme ceci:
(define (pgcd a b)
(cond ((= a 0) b)
((= b 0) a)
((< a b) (pgcd b a))
((and (< a 0) (< b 0) #t) (pgcd (* -1 a)(* -1 b)))
((and (< a 0) (> b 0) #t) (pgcd (* -1 a) b))
((and (> a 0) (< b 0) #t) (pgcd a (* -1 b)))
(else pgcd b (remainder a b))))
cette definition marche également mais lorsque je l'applique à ma définition du rationnel ainsi que la fonction permettant de placer le signe sur le numérateur:
(define (const_rat a b)
(cond ((< b 0) list (/ (* -1 a) (pgcd a b)) `/ (/ (* -1 b) (pgcd a b)))
(else (list (/ a (pgcd a b)) `/ (/ b (pgcd a b))))))
--> un message d'erreur me dit que les parties soulignées nécessitent une division par zéro qui est impossible.
Comment dois-je faire???