*矩形面积交
问题描述
平面上有两个矩形,它们的边平行于直角坐标系的X轴或Y轴。对于每个矩形,我们给出它的一对相对顶点的坐标,请你编程算出两个矩形的交的面积。
输入格式
输入仅包含两行,每行描述一个矩形。
在每行中,给出矩形的一对相对顶点的坐标,每个点的坐标都用两个绝对值不超过10^7的实数表示。
输出格式
输出仅包含一个实数,为交的面积,保留到小数后两位。
本题中,使用fabs()函数进行取绝对值运算。头文件为#include<cmath>
运用cout << setiosflags(ios::fixed) << setprecision(2) << answer << endl;
保留两位小数。头文件为#include<iomanip>
#include<iostream>
#include<cmath>//fabs()
#include<iomanip>//setprecision()
using namespace std;
double cal(double z1,double z2,double z3,double z4){
if(z3 <= z2 || z4 <= z1)
return 0;
else if(z1 <= z2 && z2 < z3 && z3 <= z4)
return z3 - z2;
else if(z1 <= z2 && z4 <= z3)
return z4 - z2;
else if(z2 < z1 && z1 < z4 && z4 < z3)
return z1 - z4;
else if(z2 < z1 && z3 < z4)
return z1 - z3;
}
int main()
{
double x1,x2,x3,x4;
double y1,y2,y3,y4;
double x,y,answer;
cin >> x1 >> y1 >> x3 >> y3;
cin >> x2 >> y2 >> x4 >> y4;
if(x1 > x3)//如果数据相反,则交换之
swap(x1,x3);
if(x2 > x4)
swap(x2,x4);
if(y1 > y3)
swap(y1,y3);
if(y2 > y4)
swap(y2,y4);
x = cal(x1,x2,x3,x4);
y = cal(y1,y2,y3,y4);
answer = fabs(x) * fabs(y);
cout << setiosflags(ios::fixed) << setprecision(2) << answer << endl;
return 0;
}