C++矩形类的序列

定义一个RectangleList类,要求能够用于保存N个Rectangle类。

Rectangle的类:可以根据左下角坐标(x, y)以及宽(w)和高(h)构成一块封闭矩形区域,此外要求:

①Rectangle类需要包含成员函数intisLocated(),用来判断点(a, b)在上述构成的矩形内,矩形上还是矩形外(在矩形内返回1,矩形上返回0,矩形外返回-1);

②Rectangle类需要包含成员函数intcalPerimeter(),用来输出矩形的周长;

③Rectangle类需要包含成员函数intcalArea(),用来输出矩形的面积;

代码实现:

#include<iostream>
#include<cmath>
#include<string>
using namespace std;
class Rectangle 
{
public:
	Rectangle(int a, int b, int c, int d) :x(a), y(b), w(c), h(d) {};
	Rectangle(int a, int b, int c) :x(a), y(b), w(c), h(c) {};
	Rectangle(int a, int b)
	{
		x = a; y = b; w = 1; h = 1;
	}
	Rectangle()
	{
		x = 0; y = 0; w = 1; h = 1;
	}
void show() 
{
	cout << "x=" << x << ",y=" << y << ",w=" << w << ",h=" << h << endl;
}
int x;
int y;
int w;
int h;
};
class RectangleList 
{
public:
	Rectangle *p=new Rectangle[N];
	int N;
	RectangleList(int num)
	{
		N = num;
	}
	int i,j;
	void showAll() 
	{
		for (i = 0; i < N; i++)
			p[i].show();
	}
	bool isCollide() 
	{
		int boolean = 0;
		for(i=0;i<N;i++)
			for (j = 1; i + j < N; j++)
			{
				if (p[i].x <= p[i].x&&p[i].y >= p[i + j].y)
					if ((p[i].x + p[i].w) > p[i+j].x && (p[i+j].y + p[i+j].h) > p[i].y)
						boolean = 1;
				if (p[i].x >= p[i+j].x&&p[i].y >= p[i+j].y)
					if ((p[i+j].x + p[i+j].w) > p[i].x && (p[i+j].y + p[i+j].h) > p[i].y)
						boolean = 1;
				if (p[i].x <= p[i+j].x&&p[i].y <= p[i+j].y)
					if ((p[i].x + p[i].w) > p[i+j].x && (p[i].y + p[i].h) > p[i+j].y)
						boolean = 1;
				if (p[i].x >= p[i+j].x&&p[i].y <= p[i+j].y)
					if ((p[i+j].x + p[i].w) > p[i].x && (p[i].y + p[i].h) > p[i+j].y)
						boolean = 1;
			}
		return(boolean);
	}
	~RectangleList()
	{
		cout << "RectangleList Deconstruct.";
	}
};
Rectangle initRectangle(int paramNum) 
{
	int a, b, c, d;
	if (paramNum == 4)
	{
		cin >> a >> b >> c >> d;
		return(Rectangle(a, b, c, d));
	}
	if (paramNum == 3)
	{
		cin >> a >> b >> c;
		return(Rectangle(a, b, c));
	}
	if (paramNum == 2)
	{
		cin >> a >> b;
		return(Rectangle(a, b));
	}
	if (paramNum == 0)
	{
		return(Rectangle());
	}
}
int main(){
    int N;
    cin>>N;
    RectangleList l(N);
    for(int i=0;i<N;i++){
        int paramNum;
        cin>>paramNum;
        l.p[i] = initRectangle(paramNum);
    }
    l.showAll();
    cout<<l.isCollide()<<endl;
}



iscollide函数我觉得是有一定难度的,需要重点看看。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 矩形rectangle定义可以这样:class Rectangle{ int length; int width; public: Rectangle(int l, int w); int getArea(); }; 是的,这是一个简单的定义矩形的示例,其中包括一个构造函数和一个获取矩形面积的函数。这里是完整的示例代码: ```c++ class Rectangle { int length; int width; public: Rectangle(int l, int w) { length = l; width = w; } int getArea() { return length * width; } }; ``` 在这个示例中,矩形具有两个私有成员变量length和width,表示矩形的长和宽。它还有一个公有的构造函数,用于初始化矩形对象的length和width成员变量。最后,它还有一个公有的getArea()函数,用于返回矩形的面积。好的,以下是一个用C++定义矩形Rectangle的例子: ```cpp #include <iostream> using namespace std; class Rectangle { private: double length; double width; public: Rectangle(double len, double wid) { length = len; width = wid; } double area() { return length * width; } double perimeter() { return 2 * (length + width); } }; int main() { Rectangle rect(5.0, 3.0); cout << "Area: " << rect.area() << endl; cout << "Perimeter: " << rect.perimeter() << endl; return 0; } ``` 这个例子定义了一个矩形Rectangle,包含私有成员变量length和width,公有成员函数area()和perimeter(),以及一个构造函数Rectangle()。构造函数用于初始化矩形的长度和宽度,而area()和perimeter()分别计算矩形的面积和周长。 在main()函数中,创建了一个长为5,宽为3的矩形rect,并调用它的area()和perimeter()方法来计算矩形的面积和周长,然后输出结果。 ### 回答2: 矩形是平面上最基础和最常见的图形之一,具有四个角和四条边,而且相邻的两条边长度相等,对角线相等。在面向对象编程中,我们可以定义一个矩形Rectangle,通过封装矩形的属性和行为,来实现对矩形对象的创建、访问和操作。 在C++中,我们可以通过以下方式定义一个矩形rectangle: ``` class Rectangle { private: double width; // 矩形的宽度 double height; // 矩形的高度 public: Rectangle(double width, double height): width(width), height(height) {} double area() { // 计算矩形的面积 return width * height; } double perimeter() { // 计算矩形的周长 return 2 * (width + height); } }; ``` 在这个定义中,Rectangle包含了私有成员变量width和height,它们分别代表矩形的宽度和高度。通过构造函数,我们可以在创建矩形对象时初始化这些成员变量。为了方便访问和操作,我们还定义了两个公共成员函数:area()和perimeter()。其中,area()用于计算矩形的面积,perimeter()用于计算矩形的周长。这些函数都是的成员函数,通过访问的私有成员变量来实现相应的计算。 除了这些基本属性和行为之外,我们还可以为矩形添加其他方法,如计算对角线长度、判断两个矩形是否相交等等。通过的封装和抽象,我们可以轻松实现多个矩形对象的创建和操作,使代码更加简洁、灵活和可维护。 ### 回答3: 矩形rectangle在面向对象编程中属于基础的图形之一,它定义矩形这种图形的属性和方法。下面我来说明该定义及其主要特点。 定义矩形rectangle,需要包含矩形的长、宽两个属性,以及计算矩形面积、周长、对角线长度等方法。以下是一个简单的矩形定义: ```python class Rectangle: def __init__(self, length, width): self.length = length self.width = width def area(self): return self.length * self.width def perimeter(self): return 2 * (self.length + self.width) def diagonal(self): return (self.length ** 2 + self.width ** 2) ** 0.5 ``` 在这个矩形类中,我们用__init__方法初始化了矩形的长和宽,在外部创建矩形对象时,需要传入这两个参数。方法area计算了矩形的面积,perimeter计算了矩形的周长,diagonal计算了矩形的对角线长度。 此外,我们还可以增加其他方法来改变矩形的属性,比如修改长和宽、平移矩形等。其中平移矩形的方法可以写为: ```python def translate(self, x, y): self.x += x self.y += y ``` 这个方法将矩形的原点(x, y)移动到新的位置(x + a, y + b),其中a和b是参数。 矩形的特点是:具有固定的属性(长和宽),具有计算相关属性的方法(面积、周长、对角线等),可以通过方法来改变属性的值(比如用translate方法改变矩形的位置)。通过的实例化,我们可以创建出不同的矩形对象,每个对象都具有自己独立的属性和方法,可以进行单独的操作。 总的来说,矩形rectangle是面向对象编程中非常基础的之一,它为我们提供了定义和操作矩形这种图形的基本工具,是学习面向对象编程的必备知识点。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值