杭电2056

此题是一道求两个矩形公共面积的题,此题注意所给的两个矩形是平行于x轴或者平行于y轴的,这样他们的公共部分就只能是矩形了,这样使问题简单了不少!!由于所输入的两个坐标可能不同,所以先进行一下统一,都变成统一的模式!!!最后进行计算!!!

#include<iostream>

using namespace std;

int main()

{     int i;    

double a[2], b[2];    

double x[4], y[4];

 while (scanf("%lf%lf", x, y) != EOF)    

{         for (i = 1; i < 4; i++)            

scanf("%lf%lf", x+i, y+i);        

if (x[0] > x[1]) swap(x[0], x[1]);        

if (y[0] > y[1]) swap(y[0], y[1]);       

if (x[2] > x[3]) swap(x[2], x[3]);        

if (y[2] > y[3]) swap(y[2], y[3]);        

a[0] = x[0] > x[2] ? x[0] : x[2];        

a[1] = x[1] < x[3] ? x[1] : x[3];        

b[0] = y[0] > y[2] ? y[0] : y[2];       

 b[1] = y[1] < y[3] ? y[1] : y[3];        

printf("%.2f\n", a[0]<a[1] && b[0]<b[1]? (b[1]-b[0])*(a[1]-a[0]) : 0);    

}

    return 0;

}

你可能感兴趣的:(杭电)