解题思路:两个长方形没相交,则一个长方形的最小横坐标大于z另一个最大横坐标,或一个最小纵坐标大于另一个最大纵坐标;若相交,则相交部分的长方形的坐标必介于两个长方形中的最大与最小坐标之间,即其坐标为:第二,三大的横纵坐标;
注意事项:
参考代码:
int main()
{
double x1,y1,x2,y2;//第一个长方形的坐标
double s1,t1,s2,t2;//第二个长方形坐标
double x,y;
double t;
double s;
scanf("%lf%lf%lf%lf",&x1,&y1,&x2,&y2);
scanf("%lf%lf%lf%lf",&s1,&t1,&s2,&t2);
/*将两个长方形坐标转换为对应左下角与右上角*/
if(x1>x2){t=x1,x1=x2,x2=t;}
if(y1>y2){t=y1,y1=y2,y2=t;}
if(s1>s2){t=s1,s1=s2,s2=t;}
if(t1>t2){t=t1,t1=t2,t2=t;}
if(s1>x2||x1>s2||y1>t2||t1>y2)s=0;//两个长方形未相交
else
s=((x2<s2?x2:s2)-(x1>s1?x1:s1))*((y2<t2?y2:t2)-(y1>t1?y1:t1));//若相交则相交部分的横坐标为两个长方形的横坐标的中间两个,纵坐标类似
printf("%.2lf",s);
}
0.0分
0 人评分