D - rectangle
1.00 1.00 3.00 3.00 2.00 2.00 4.00 4.00 5.00 5.00 13.00 13.00 4.00 4.00 12.50 12.50
1.00 56.25
解题思路:我先把输入的对角线的点全部变成副对角线,然后把下图中x1,y1,x2,y2找出来,相互比较计算出覆盖的矩形面积。
我的代码 :
#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<cmath>
#include<iomanip>
#include<string.h>
using namespace std;
struct point
{
double x,y;
};
int main()
{
point a, b, c, d;
while (cin>>a.x>>a.y>>b.x>>b.y>>c.x>>c.y>>d.x>>d.y)
{
double x1, y1, x2, y2;
if (a.x > b.x)
swap (a.x , b.x);
if (c.x > d.x)
swap (c.x , d.x);
if (a.y > b.y)
swap (a.y , b.y);
if (c.y > d.y)
swap (c.y , d.y);
x1 = max(a.x , c.x);
x2 = min(b.x , d.x);
y1 = min(b.y , d.y);
y2 = max(a.y , c.y);
double l , w;
if (x2 < x1 || y2 > y1)
cout << "0.00" << endl;
else{
l = x2 - x1;
w = y1 - y2;
printf("%.2lf\n", l*w);
}
}
return 0;
}