矩形面积交

题目 求两矩形面积交
题目描述

在平面直角坐标系中有两个矩形,给你两个矩形的对角坐标
请计算两矩形的面积之交。

输入描述

输入

第1行是一个整数T,代表测试样例组数。

后面有T行,每行有4对共8个实数,前4个数代表第一个矩形的对角两横纵坐标,后4个数代表第二个矩形的对角两横纵坐标。

输出描述

输出

对于每组输入,输出一个实数,表示两矩形的面积交。

样例输入

1

1 1 3 3 2 2 4 4

样例输出

1.00

分析

1. 没说明是否是左上角和右下角坐标还是右上角和左下角的坐标
2. 所以我们可以通过对同一个矩形的坐标分别去最大值 最小值的方式,使得其最终全部变为右上角和左下角的坐标
3. 通过对两个右上角的坐标取最小值和两个左下角坐标取最大值的方式得到“相交矩形的右上角和左下角坐标”(因为你需要判断这个矩形是否真实存在,这是个很坑的点
4. 判断是否存在,不存在的话就输出0
5. 还有一个小坑,就是如果你用printf输出的话 要有换行符,否则也不AC!!

代码

#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;


int main()
{
	double x1,y1,x2,y2,x3,y3,x4,y4;
	int n;
	cin>>n;
	while(n--)
	{
	cin>>x1>>y1>>x2>>y2;
	cin>>x3>>y3>>x4>>y4;
	double a,b,c,d,a2,b2,c2,d2;
	a=max(x1,x2);//第一个矩形右上角x坐标 
	b=max(y1,y2);//第一个矩形右上角y坐标 
	c=min(x1,x2);//第一个矩形左下角x坐标
	d=min(y1,y2);//第一个矩形左下角y坐标
	a2=max(x3,x4);//第二个矩形右上角x坐标 
	b2=max(y3,y4);//第二个矩形右上角y坐标
	c2=min(x3,x4);第二个矩形左下角x坐标
	d2=min(y3,y4);第二个矩形左下角y坐标
	double ans1x,ans1y,ans2x,ans2y;
	ans1x=min(a,a2);
	ans1y=min(b,b2);//相交矩形右上角坐标 
	ans2x=max(c,c2);
	ans2y=max(d,d2);//相交矩形左下角坐标 
	
	double area=abs(ans1x-ans2x)*abs(ans1y-ans2y);
	if(ans1x>ans2x&&ans1y>ans2y)
	printf("%.2f\n",area);
	else
	printf("0.00\n");
}
	return 0;
 } 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值