一开始我使用if else 语句来处理条件,好几次没显示过。后来受到其他coder的启发,运用函数体,这样显得代码简便清晰明了。
这一题不难,画个图就知道了。(以此为戒)
#include<iostream>
#include<stdio.h>
#include<math.h>
using namespace std;
double max(double x,double y){
if(x>y)
return x;
else
return y;
}
double min(double x,double y){
if(x<y)
return x;
else
return y;
}
int main(){
double area;
double x1,x2,x3,x4,y1,y2,y3,y4;
while(scanf("%lf%lf%lf%lf%lf%lf%lf%lf",&x1,&y1,&x2,&y2,&x3,&y3,&x4,&y4)!=EOF){
double _x1=min(x1,x2),_x2=max(x1,x2),_x3=min(x3,x4),_x4=max(x3,x4);
double _y1=min(y1,y2),_y2=max(y1,y2),_y3=min(y3,y4),_y4=max(y3,y4);
x1=max(_x1,_x3);
x2=min(_x2,_x4);
y1=max(_y1,_y3);
y2=min(_y2,_y4);
if(x1>x2||y1>y2)
area=0.00;
else
{
area=(x2-x1)*(y2-y1);
}
printf("%.2lf\n",area);
}
return 0;
}