写在前面: 起初看这道题太绕了,看了一眼别人的思路,然后懂了,自己在纸上勾勾画画,总算是弄清楚了,结构体用得我也是很绕,本以为可以简单一点,弄巧成拙,菜鸡本菜。不过也成功get min()和max()函数用法
题目:
问题描述
平面上有两个矩形,它们的边平行于直角坐标系的X轴或Y轴。对于每个矩形,我们给出它的一对相对顶点的坐标,请你编程算出两个矩形的交的面积。
输入格式
输入仅包含两行,每行描述一个矩形。
在每行中,给出矩形的一对相对顶点的坐标,每个点的坐标都用两个绝对值不超过10^7的实数表示。
输出格式
输出仅包含一个实数,为交的面积,保留到小数后两位。
样例输入
1 1 3 3
2 2 4 4
样例输出
1.00
#include <iostream>
using namespace std;
struct{
double x1,y1;
double x2,y2;
}stu1,stu2;
int main()
{
cin>>stu1.x1>>stu1.y1>>stu1.x2>>stu1.y2;
cin>>stu2.x1>>stu2.y1>>stu2.x2>>stu2.y2;
double a=max(min(stu1.x1,stu1.x2),min(stu2.x1,stu2.x2));
double b=min(max(stu1.x1,stu1.x2),max(stu2.x1,stu2.x2));
double c=max(min(stu1.y1,stu1.y2),min(stu2.y1,stu2.y2));
double d=min(max(stu1.y1,stu1.y2),max(stu2.y1,stu2.y2));
if(a<b && c<d)
printf("%.2f",(b-a)*(d-c));
else
cout<<"0.00";
return 0;
}