解题思路:
注意事项:
参考代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
double x1, x2,x3,x4;
double y1,y2,y3,y4;
//输入四组坐标
cin >> x1 >> y1 >> x2 >> y2;
cin >> x3 >> y3 >> x4 >> y4;
//要判断它们相交否
bool flag = true;
//分别求每个图像x,y最大的点,用于等会判断图形位置
double max_x1 = x1 > x2 ? x1 : x2;
double max_x2 = x3 > x4 ? x3 : x4;
double max_y1 = y1 > y2 ? y1 : y2;
double max_y2 = y3 > y4 ? y3 : y4;
//下述四个只要有一个不满足便不相交
//第一个图像更靠右
if(max_x1 > max_x2)
{
int min = x1 < x2 ? x1 : x2;
if(min >= max_x2)
flag = false;
}
//第二个更靠右
else
{
int min = x3 < x4 ? x3 : x4;
if(min >= max_x1)
flag = false;
}
//第一个图像更靠上
if(max_y1 > max_y2)
{
int min = y1 < y2 ? y1 : y2;
if(min >= max_y2)
flag = false;
}
//第二个更靠上
else
{
int min = y3 < y4 ? y3 : y4;
if(min >= max_y1)
flag = false;
}
double x[4], y[4];
x[0] = x1,x[1] = x2, x[2] = x3, x[3] = x4;
y[0] = y1, y[1] = y2, y[2] = y3, y[3] = y4;
sort(x,x+4);
sort(y,y+4);//将坐标按大小进行排序
//中间两个则为求面积的关键,相交的情况下
if(flag)
{
double S = (x[2] - x[1]) * (y[2]-y[1]);
cout << fixed << setprecision(2) << S << endl;
}
else
cout << "0.00" << endl;
return 0;
}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复