题目出自杭电
题目大意:
给出两矩形的对角线上的两点(没说是主对角线还是副对角线)求两矩形的相交面积。
注意:
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;
}