蓝桥 BASIC-18 矩阵面积交

*矩形面积交

问题描述
  平面上有两个矩形,它们的边平行于直角坐标系的X轴或Y轴。对于每个矩形,我们给出它的一对相对顶点的坐标,请你编程算出两个矩形的交的面积。
输入格式
  输入仅包含两行,每行描述一个矩形。
  在每行中,给出矩形的一对相对顶点的坐标,每个点的坐标都用两个绝对值不超过10^7的实数表示。
输出格式
  输出仅包含一个实数,为交的面积,保留到小数后两位。

本题中,使用fabs()函数进行取绝对值运算。头文件为#include<cmath>
运用cout << setiosflags(ios::fixed) << setprecision(2) << answer << endl;
保留两位小数。头文件为#include<iomanip>

#include<iostream>
#include<cmath>//fabs() 
#include<iomanip>//setprecision()
using namespace std;
double cal(double z1,double z2,double z3,double z4){
	if(z3 <= z2 || z4 <= z1)
		return 0;
	else if(z1 <= z2 && z2 < z3 && z3 <= z4)
		return z3 - z2;
	else if(z1 <= z2 && z4 <= z3)
		return z4 - z2;
	else if(z2 < z1 && z1 < z4 && z4 < z3)
		return z1 - z4;
	else if(z2 < z1 && z3 < z4)
		return z1 - z3;
}
int main()
{
	double x1,x2,x3,x4;
	double y1,y2,y3,y4;
	double x,y,answer;
	
	cin >> x1 >> y1 >> x3 >> y3;
	cin >> x2 >> y2 >> x4 >> y4;
	
	if(x1 > x3)//如果数据相反,则交换之
		swap(x1,x3);
	if(x2 > x4)
		swap(x2,x4);
	if(y1 > y3)
		swap(y1,y3);
	if(y2 > y4)
		swap(y2,y4);
		
	x = cal(x1,x2,x3,x4);	
	y = cal(y1,y2,y3,y4);			
	answer = fabs(x) * fabs(y);
	cout << setiosflags(ios::fixed) << setprecision(2) << answer << endl;
	return 0;
} 
发布了17 篇原创文章 · 获赞 0 · 访问量 1417

猜你喜欢

转载自blog.csdn.net/weixin_43511030/article/details/104144778