Bonjour , j'ai essayé d'écrire un programme qui prend un nombre en paramètre et qui le renvoit en binaire .
Voici mon algorithme en français , à partir d'un exemple :
prenons le chiffre 12 .
12/2 = 6 >> (quotient 12 2) (modulo 12 2)
6/2 = 3 >> >> (quotient 6 2) (modulo 6 2)
3/2 = 1 , reste 1 >> (quotient 3 2) (modulo 3 2)
1/2 = 0 reste 1 >> (quotient 1 2) (modulo 1 2)
Donc je dois utiliser une fonction récurisve pour ça qui m'affiche 1 si le modulo de n 2 vaut 0 et qui m'affiche 0 si le modulo ne vaut pas 0 .
voici mon code :
1 2 3 4 5 6 7
| (define (base n)
(if (= n 0)
0
(base (quotient n 2))
(if (= (modulo n 2) 0)
1
0))) |
1.La fonction prend un seul paramètre , n , là vous etes d'accord je pense .
2. si n = 0 on renvoit 0 c'est logique , 0 en base 2 ça fait 0 , donc c'est la 1ere condition .
3.je crée ma fonction récursive qui tant que n n'est pas égal ) 0 vaut quotient n 2 , normal , on a 12 , 6 , 3 , 1 .
Et je dis bien que si le modulo est égal à 0 on affiche 1 , sinon on affiche 0.
J'ai juste un soucis c'est à la compilation j'ai ce message :
if: bad syntax (has 4 parts after keyword) in: (if (= n 0) 0 (decimal-binaire (quotient n 2)) (if (= (modulo n 2) 0) 1 0))
c'est la 1ere fois que je vois ça , qu'est ce qui ne va pas , on a pas le droit de mettre 4 parties dans un if ?
merci de votre soutient .
Partager