湖南某高校一根小稻草 2019-06-05 07:50 采纳率: 100%
浏览 473

矩形类——C++程序,C++程序

1) 定义一个矩形(Rectangle)类,该类代表了一个矩形。可以定义不同的矩形,并对矩形进行如下运算:

移动矩形

 判断一个点是否在矩形内部

 求两个矩形合并后的矩形,通过函数返回值返回代表合并后矩形的新建立
的矩形对象

 求两个矩形交集,通过函数返回值返回代表两个矩形交集的一个新建立的
矩形对象

.

点不在矩形内部 合并后的矩形 两个矩形的交集

设计提示
矩形类提示如下:

(1) 左上角坐标(x, y,)和矩形的宽度width、高度height可以描绘一个矩形

(2) 由于要判断点是否在矩形内,所以判断函数(isInside)应该作为该类的方
法,同样合并矩形(unionWith)和求两个矩形的交集(intersection)也分
别是方法。

(3) 可以定义多个构造函数,第一个是无参构造函数Rectangle,此时默认为
左上角和右下角的坐标都是(0,0),实际是一个点。第二个有4个参数Rect
angle (double x, double y, double width, double height),分别代表左上
角坐标、宽度和高度。第三个有两个参数Rect(double width, double heigh
t),认为左上角和右下角坐标分别是(0,0)和(width, height)。

测试代码提示如下:

(1) 定义多个矩形对象和点坐标变量

(2) 调用对象方法isInside判断一个点是否在矩形内并打印合并后的结果

(3) 调用unionWith合并矩形并打印合并后的结果

(4) 调用intersection求矩形的交集并打印合并后的结果

  • 写回答

1条回答 默认 最新

  • threenewbee 2019-06-05 16:45
    关注
    // Q764632.cpp : This file contains the 'main' function. Program execution begins and ends there.
    //
    
    #include <iostream>
    using namespace std;
    
    class Rectangle
    {
    public:
        int l;
        int t;
        int r;
        int b;
        Rectangle() { l = t = r = b = 0; }
        Rectangle(const Rectangle& rect)
        {
            l = rect.l;
            t = rect.t;
            r = rect.r;
            b = rect.b;
        }
        Rectangle(int left, int top, int width, int height)
        {
            l = left;
            t = top;
            r = l + width;
            b = t + height;
        }
        void move(int x, int y)
        {
            l += x;
            r += x;
            t += y;
            b += y;
        }
        int isInside(int x, int y)
        {
            return (x > l) && (x < r) && (y > t) && (y < b);
        }
        Rectangle unionWith(Rectangle rect)
        {
            Rectangle re;
            re.l = l > rect.l ? rect.l : l;
            re.r = r > rect.r ? r : rect.r;
            re.t = t > rect.t ? rect.t : t;
            re.b = b > rect.b ? b : rect.b;
            return re;
        }
        Rectangle intersection(Rectangle rect)
        {
            Rectangle re;
            re.l = l < rect.l ? rect.l : l;
            re.r = r < rect.r ? r : rect.r;
            re.t = t < rect.t ? rect.t : t;
            re.b = b < rect.b ? b : rect.b;
            return re;
        }
        void PrintRect()
        {
            cout << "left=" << l << ",top=" << t << ",width=" << r - l << ",height=" << b - t << endl;
        }
    };
    
    int main()
    {
        //(1) 定义多个矩形对象和点坐标变量
        Rectangle r1(10, 10, 10, 10), r2(5, 5, 10, 10), r3(20, 20, 15, 5);
        r1.PrintRect();
        r2.PrintRect();
        r3.move(5, -5);
        r3.PrintRect();
        //(2) 调用对象方法isInside判断一个点是否在矩形内并打印合并后的结果
        cout << r1.isInside(15, 15) << endl;
        cout << r1.isInside(5, 5) << endl;
        //(3) 调用unionWith合并矩形并打印合并后的结果
        Rectangle r4 = r1.unionWith(r3);
        r4.PrintRect();
        //(4) 调用intersection求矩形的交集并打印合并后的结果
        Rectangle r5 = r1.intersection(r2);
        r5.PrintRect();
    }
    
    

    图片说明

    评论

报告相同问题?

悬赏问题

  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入
  • ¥40 使用MATLAB解答线性代数问题
  • ¥15 COCOS的问题COCOS的问题
  • ¥15 FPGA-SRIO初始化失败
  • ¥15 MapReduce实现倒排索引失败
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员
  • ¥15 matlab生成电测深三层曲线模型代码
  • ¥50 随机森林与房贷信用风险模型