1.相离:
一对x中小的那个比另一对x中大的那个还大
一对x中大的那个比另一对x中小的那个还小
一对y中小的那个比另一对y中大的那个还大
一对y中大的那个比另一对y中小的那个还小
2.相交:
将四个横坐标排序,中间的两个大的减去小的,就是相交矩形平行于x轴的边。
纵坐标同理
#include <iostream>
#include <iomanip>
#include<algorithm>
using namespace std;
int main(){
double x1, x2, y1, y2;
double x3, x4, y3, y4;
double area;
cin >> x1 >> y1 >> x2 >> y2;//(x1, y1) (x2, y2)
cin >> x3 >> y3 >> x4 >> y4;//(x3, y3) (x4, y4)
//相离的四种情况
if (min(x1, x2) > max(x3, x4) || min(x3, x4) > max(x1, x2) || min(y1, y2) > max(y3, y4) || min(y3, y4) > max(y1, y2))
area = 0;
//相交
else {
double x[4] = { x1, x2, x3, x4 };
double y[4] = { y1, y2, y3, y4 };
sort(x, x + 4);
sort(y, y + 4);
area = (x[1] - x[2]) * (y[1] - y[2]);
}
cout << fixed << setprecision(2) << area;
return 0;
}
总结:
1.这里使用数组直接sort排序
sort函数用法
2.使用库函数可以更加简单
3.格式化输出