HDU2056

题目出自杭电
HDU2056_第1张图片
题目大意:
给出两矩形的对角线上的两点(没说是主对角线还是副对角线)求两矩形的相交面积。
注意:
1.注意给的对角线不一定是主对角线,所以要转换成主对角线上的点,。

2.还需要判断形成的两个矩形是否有相交的部分,如果没有直接输出0.00,判断条件是:第四个点的横坐标、纵坐标都大于第一个点的;且第三个点的横、纵坐标都小于第二个点的。

3.计算相交部分的面积,取第二个、第四个点中较小的点,取第一个、第三个点中较大的点,求以这两个点为对角线的矩形面积。

#include <stdio.h>
#include<iostream>
void change(double *x1,double *y1,double *x2,double *y2)
{
    double t;
    if(*x1 > *x2)
    {
        t=*x1;
        *x1=*x2;
        *x2=t;
    }
    if(*y1 > *y2)
    {
        t=*y1;
        *y1=*y2;
        *y2=t;
    }
}
int main()
{
    double A[8],x1,y1,x2,y2;
    while(~scanf("%lf%lf%lf%lf%lf%lf%lf%lf",&A[0],
                &A[1],&A[2],&A[3],&A[4],&A[5],&A[6],&A[7]))
    {
        change(&A[0],&A[1],&A[2],&A[3]);
        change(&A[4],&A[5],&A[6],&A[7]);
        x1= A[0] > A[4] ? A[0] : A[4];//x1与x3作比较,取max
        y1= A[1] > A[5] ? A[1] : A[5];//y1与y3作比较,取max
        x2= A[2] < A[6] ? A[2] : A[6];//x2与x4作比较,取min
        y2= A[3] < A[7] ? A[3] : A[7];//y2与y4作比较,取min
        if((x2-x1)<0 || (y2-y1)<0)
            printf("0.00\n");
        else
            printf("%.2lf\n",(x2-x1)*(y2-y1));
    }
    return 0;
}

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