题目描述
用具有x,y两个整型变量成员的结构类型SPoint来表示坐标点。
用SRect结构类型来描述矩形,其中包含p1和p2两个SPoint成员分别表示矩形对角线上的两个点。编写判断两个矩形是否重叠的函数。
输入
判断次数
矩形1的对角线顶点坐标x1、y1、x2、y2
矩形2的对角线顶点坐标x1、y1、x2、y2
…
输出
是否重叠
样例输入
3
1 5 2 9
1 3 2 4
5 6 7 8
5 7 7 7
2 5 1 0
9 4 2 9样例输出
not overlapped
overlapped
overlapped提示
#include<bits/stdc++.h>
using namespace std;
struct SPoint
{
int x,y;
};
struct SRect
{
SPoint p1;
SPoint p2;
};
int main()
{
int t;
cin>>t;
while(t--)
{
SRect rectangle1,rectangle2;
cin>>rectangle1.p1.x>>rectangle1.p1.y
>>rectangle1.p2.x>>rectangle1.p2.y
>>rectangle2.p1.x>>rectangle2.p1.y
>>rectangle2.p2.x>>rectangle2.p2.y;
if(rectangle1.p2.x<rectangle1.p1.x)
{
swap(rectangle1.p2.x,rectangle1.p1.x);
}
if(rectangle1.p2.y>rectangle1.p1.y)
{
swap(rectangle1.p2.y,rectangle1.p1.y);
}
if(rectangle2.p2.x<rectangle2.p1.x)
{
swap(rectangle2.p2.x,rectangle2.p1.x);
}
if(rectangle2.p2.y>rectangle2.p1.y)
{
swap(rectangle2.p2.y,rectangle2.p1.y);
}
if(rectangle1.p2.y>rectangle2.p1.y
||rectangle1.p1.y<rectangle2.p2.y
||rectangle1.p2.x<rectangle2.p1.x
||rectangle1.p1.x>rectangle2.p2.x)
{
cout<<"not overlapped"<<endl;
}
else
{
cout<<"overlapped"<<endl;
}
}
return 0;
}