矩形关系(运算符重载)

#include<iostream>
using namespace std;

class CPoint {
	int X,Y;
public:
	CPoint(int x,int y):X(x),Y(y){}
	int getX() {return X;}
	int getY() {return Y;}
};

class CRectangle {
	friend ostream& operator<<(ostream& os, CRectangle& p);
	CPoint left, right;
public:
	CRectangle(int x1,int y1,int x2,int y2):left(x1,y1),right(x2,y2){}
	bool operator>(CPoint& c) {
		if (c.getX() >= this->left.getX() && c.getX() <= this->right.getX() && c.getY() >= this->right.getY() && c.getY() <= this->left.getY()) {
			return true;
		}
		else {
			return false;
		}
	}
	bool operator>(CRectangle& c) {
		if ((c.left.getX() >= this->left.getX() && c.left.getX() <= this->right.getX() && c.left.getY() >= this->right.getY() && c.left.getY() <= this->left.getY())
			&&(c.right.getX() >= this->left.getX() && c.right.getX() <= this->right.getX() && c.right.getY() >= this->right.getY() && c.right.getY() <= this->left.getY())) {
			return true;
		}
		else {
			return false;
		}
	}
	bool operator==(CRectangle& c) {
		if (c.left.getX() == this->left.getX() && c.left.getY() == this->left.getY() && c.right.getX() == this->right.getX() && c.right.getY() == this->right.getY()) {
			return true;
		}
		else {
			return false;
		}
	}
	bool operator*(CRectangle& c) {
		if (c.left.getX()>=this->left.getX()&&c.left.getX()<=this->right.getX()||c.left.getY()>=this->right.getY()&&c.left.getY()<=this->left.getY()) {
			return true;
		}
		else {
			return false;
		}
	}
	operator int() {
		return (left.getY() - right.getY()) * (right.getX() - left.getX());
	}
};

ostream& operator<<(ostream& os, CRectangle& p) {
	os << p.left.getX() << " " << p.left.getY() << " " << p.right.getX() << " " << p.right.getY() ;
	return os;
}

int main() {
	int t, x1, x2, y1, y2;
	cin >> t;
	while (t--) {
		cin >> x1 >> y1 >> x2 >> y2;
		CRectangle rect1(x1, y1, x2, y2);
		cin >> x1 >> y1 >> x2 >> y2;
		CRectangle rect2(x1, y1, x2, y2);
		cout << "矩形1:" << rect1 << " " << (int)rect1 << endl;
		cout << "矩形2:" << rect2 << " " << (int)rect2 << endl;
		if (rect1 == rect2) {
			cout << "矩形1和矩形2相等"<<endl;
		}
		else if (rect2 > rect1) {
			cout << "矩形2包含矩形1" << endl;
		}
		else if (rect1 > rect2) {
			cout << "矩形1包含矩形2" << endl;
		}
		else if (rect1 * rect2) {
			cout << "矩形1和矩形2相交" << endl;
		}
		else {
			cout << "矩形1和矩形2不相交" << endl;
		}
		cout << endl;
	}
	return 0;
}

 

 

 

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值