SICP 习题2.3 计算矩形面积和周长

我是用两个点表示的一个矩形,矩形的左下方的点和右上方的点。
还有一种方法可以用一个左下方的点,一个长,一个宽就可以了。
建立抽象屏障就是要求每个表示方法都能求出一个矩形的长和宽,根据这两个信息,就可以求出矩形面积和周长。
(define make-rect cons)
(define s-rect car)
(define e-rect cdr)

(define make-point cons)
(define x-point car)
(define y-point cdr)

(define rect-width
  (lambda (rect)
    (- (x-point (e-rect rect)) 
       (x-point (s-rect rect)))))

(define rect-heigth
  (lambda (rect)
    (- (y-point (e-rect rect))
       (y-point (s-rect rect)))))

(define rect-area
  (lambda (rect)
    (* (rect-width rect)
       (rect-heigth rect))))

(define rect-perimeter
  (lambda (rect)
    (* (+ (rect-width rect)
      (rect-heigth rect))
       2)))

(define rect 
  (make-rect (make-point 1 2) (make-point 3 4)))

(newline)
(display (rect-area rect))
(newline)
(display (rect-perimeter rect))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值