练习 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)
















版权声明:知行合一

基础练习 矩形面积交

问题描述   平面上有两个矩形,它们的边平行于直角坐标系的X轴或Y轴。对于每个矩形,我们给出它的一对相对顶点的坐标,请你编程算出两个矩形的交的面积。 输入格式   输入仅包含两行,每行描述一个矩...
  • Liukx940818
  • Liukx940818
  • 2015年03月11日 12:42
  • 2495

蓝桥杯 BASIC-18 基础练习 矩形面积交

问题描述 平面上有两个矩形,它们的边平行于直角坐标系的X轴或Y轴。对于每个矩形,我们给出它的一对相对顶点的坐标,请你编程算出两个矩形的交的面积。 输入格式 输入仅包含两行,每行描述一个矩形。 ...
  • liuchuo
  • liuchuo
  • 2016年07月22日 00:32
  • 578

练习5 面向对象基础(含答案)

练习5 面向对象基础 Ⅰ.选择题 1、列选项中哪个是类public class Test { }的默认构造方法___?(知识点:构造器)           A. Test();       ...
  • zyx520ytt
  • zyx520ytt
  • 2015年12月04日 08:31
  • 2174

C#语法基础-定义一个矩形对象

using System; namespace RectangleApplication { class Rectangle { double length; double w...
  • wangkun__
  • wangkun__
  • 2016年12月16日 10:14
  • 702

蓝桥杯试题矩形面积交java实现

import java.util.Scanner; public class Main { //根据画图来进行分析得出     public static void main(String[...
  • microopithecus
  • microopithecus
  • 2017年12月29日 15:21
  • 46

Java定义矩形类

矩形类 package cn.edu.uibe.oop;public class Rectangle {  float width,height;  /**   * 计算面积    * @return...
  • microtong
  • microtong
  • 2009年09月17日 14:25
  • 3698

蓝桥杯练习(vip) 矩形面积交

/*问题描述   平面上有两个矩形,它们的边平行于直角坐标系的X轴或Y轴。对于每个矩形,我们给出它的一对相对顶点的坐标,请你编程算出两个矩形的交的面积。 输入格式   输入仅包含两行,每行描述一...
  • u010057965
  • u010057965
  • 2014年04月18日 09:25
  • 959

(蓝桥杯题)基础练习 矩形面积交

问题描述   平面上有两个矩形,它们的边平行于直角坐标系的X轴或Y轴。对于每个矩形,我们给出它的一对相对顶点的坐标,请你编程算出两个矩形的交的面积。 输入格式   输入仅包含两行,每...
  • u014068781
  • u014068781
  • 2015年03月06日 21:18
  • 437

JAVA蓝桥杯矩形面积交

问题描述   平面上有两个矩形,它们的边平行于直角坐标系的X轴或Y轴。对于每个矩形,我们给出它的一对相对顶点的坐标,请你编程算出两个矩形的交的面积。 输入格式   输入仅包含两行,每行描述一个矩形。 ...
  • wzt529
  • wzt529
  • 2017年02月12日 11:23
  • 234

java例题学习:面向对象之长方形例题学习

/* 定义一个长方形类,定义 求周长和面积的方法, 然后定义一个测试了Test2,进行测试。 长方形的类: 成员变量: 长,宽 成员方法: 求周长:(长+宽)*2; 求面积:长...
  • qq_31539817
  • qq_31539817
  • 2016年09月08日 17:17
  • 285
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:练习 2.3 定义矩形
举报原因:
原因补充:

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