HDU/2056-i/main.c

31 lines
813 B
C
Raw Normal View History

2020-08-31 16:48:58 +00:00
#include<stdio.h>
double max(double a,double b) //求两者中大的
{
return a>b?a:b;
}
double min(double c,double d) //求两者中小的
{
return c<d?c:d;
}
void solve()
{
double x1,y1,x2,y2,x3,y3,x4,y4,t;
while(scanf("%lf%lf%lf%lf%lf%lf%lf%lf",&x1,&y1,&x2,&y2,&x3,&y3,&x4,&y4)!=EOF)
{
if(x1>x2) t=x1,x1=x2,x2=t;// 保证x2>x1。符合图中的情况。
if(y1>y2) t=y1,y1=y2,y2=t;//同上
if(x3>x4) t=x3,x3=x4,x4=t;//同上
if(y3>y4) t=y3,y3=y4,y4=t;//同上
double l=min(x2,x4)-max(x1,x3);// 求宽
double d=min(y2,y4)-max(y1,y3);// 求高。
double s=l*d; //求面积。
printf("%.2lf\n",max(x1,x3)>min(x2,x4)||max(y1,y3)>min(y2,y4)?0:s);//如果高或宽小于0解为0即没有相交的部分否则输出面积
}
}
int main()
{
solve();//问题解决。
return 0;
}