<< SICPメモ(6) 2.1.1 cons,car,cdr | top | 「ループ」読了 >>

スポンサーサイト

一定期間更新がないため広告を表示しています

スポンサードリンク | - | | - | - |

SICPメモ(7) 問題2.1

SCIPでは有理数を扱うため、次のような手続きを定義している。

(define (make-rat n d) (cons n d))
(define (numer x) (car x))
(define (denom x) (cdr x))
(define (print-rat x) (display (numer x)) (display "/")(display (denom x)))

他にも足し算とか引き算とかもある。有理数を作って実行してみると、
(print-rat (make-rat 2 3))
2/3
ただ、少し問題があって、例えば
(print-rat (make-rat -2 -3))
-2/-3
となってしまう。別にいいっちゃいいような気もするがこれを直せという問題。
単に分母が負なら分子と分母に-1をかければいいだけだ。これだと1 -3を与えたとき1/-3と表示されてしまうものも-1/3となっていい感じ。

(define (make-rat n d)
  (cond
  ((< d 0) (cons (* -1 n) (* -1 d)))
  (else (cons n d))
  )
)
(print-rat (make-rat -2 -3))
2/3

簡単だね。
ジャジャガッチ | LISP | 07:24 | comments(0) | trackbacks(0) |

スポンサーサイト

スポンサードリンク | - | 07:24 | - | - |
Comment









Trackback
URL:

07
--
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
--
>>
<<
--
PR
RECOMMEND
RECENT COMMENT
MOBILE
qrcode
OTHERS
Since 2013/09/17
LATEST ENTRY
CATEGORY
ARCHIVE
LINKS
PROFILE
SEARCH