练习 2.3 定义矩形

原创 2016年05月31日 17:45:16

“` lisp

lang racket

;: 练习2.3 定义矩形

;: 定义点
(define (make-point x y)
(cons x y))
(define (x-point point)
(car point))
(define (y-point point)
(cdr point))

(define (print-point p)
(newline)
(display “(“)
(display (x-point p))
(display “,”)
(display (y-point p))
(display “)”))

;: 计算给定矩型的周长和面积
;: 2 * (宽+高)
(define (perimeter-rect rect)
(* 2 (+ (width-rect rect) (height-rect rect))))
;: 宽*高
(define (area-rect rect)
(* (width-rect rect) (height-rect rect)))

;: 第一种表示法:用两个顶点表示,左上顶点,右下顶点
(define (make-rect pt0 pt1) (cons pt0 pt1))
(define (left-point rect) (car rect))
(define (right-point rect) (cdr rect))

;: 获取矩形的宽
(define (width-rect rect)
(let ((left (left-point rect))
(right (right-point rect)))
(- (x-point right) (x-point left))))

;: 获取矩形的高
(define (height-rect rect)
(let ((left (left-point rect))
(right (right-point rect)))
(- (y-point right) (y-point left))))

;: 制造一个矩型
(define rect (make-rect (make-point 1 2)
(make-point 3 4)))

;: 测试
rect
(area-rect rect)
(perimeter-rect rect)

lisp

lang racket

;: 练习2.3 定义矩形
;: 平面上线段的表示问题
(define (make-segment start-point end-point)
(cons start-point end-point))

(define (start-segment seg)
(car seg))
(define (end-segment seg)
(cdr seg))

;: 定义点
(define (make-point x y)
(cons x y))
(define (x-point point)
(car point))
(define (y-point point)
(cdr point))

;: 计算给定矩型的周长和面积
;: 2 * (宽+高)
(define (perimeter-rect rect)
(* 2 (+ (width-rect rect) (height-rect rect))))
;: 宽*高
(define (area-rect rect)
(* (width-rect rect) (height-rect rect)))

;: 第二种表示法:用两条相互垂真的线段表示
(define (make-rect line01 line02) (cons line01 line02))

;: 获取矩形的宽
(define (width-rect rect)
(let ((line (car rect)))
(abs (- (x-point (start-segment line)) (x-point (end-segment line))))))

;: 获取矩形的高
(define (height-rect rect)
(let ((line (cdr rect)))
(abs (- (y-point (start-segment line)) (y-point (end-segment line))))))

;: 制造一个矩型
(define rect (make-rect (make-segment (make-point 1 4) (make-point 3 4))
(make-segment (make-point 1 2) (make-point 1 4))
))

;: 测试
(area-rect rect)
(perimeter-rect rect)
















版权声明:知行合一

相关文章推荐

【练习】面向对象系列(004)——在自定义窗口中画矩形、直线、椭圆

【练习】面向对象系列(004)——在自定义窗口中画矩形、直线、椭圆

【练习】面向对象系列(005)——在自定义窗口中画矩形、直线、椭圆、涂鸦

【练习】面向对象系列(005)——在自定义窗口中画矩形、直线、椭圆、涂鸦要求:创建一个图形窗口添加四个按钮,每个按钮对应画一种图形, 并为其添加一个用户登录界面,只有在正确登录的时候才能进入画图软件画...

自定义的圆角矩形

  • 2017-06-23 21:38
  • 30.47MB
  • 下载

S5PV210 Android2.3 添加自定义按键:作唤醒功能

最近需要做个唤醒功能,当按键的时候android系统唤醒并点亮屏,在长按键中,系统不能在进入睡眠。 驱动方面: 1:在平台设备文件中添加 一个按键,定义为唤醒源 \arch\arm\mach-s...

Android 2.3及以上版本支持自定义的ttf字体的方法

Android 2.3及以上版本支持自定义的ttf字体的方法   所谓无图无真相,先看效果图: 2.3及以上版本支持自定义的ttf字体的方法" alt="" src="http://...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)