题目描述
平面上有两个矩形,它们的边平行于直角坐标系的X轴或Y轴。对于每个矩形,我们给出它的一对相对顶点的坐标,请你编程算出两个矩形的交的面积。
输入仅包含两行,每行描述一个矩形。在每行中,给出矩形的一对相对顶点的坐标,每个点的坐标都用两个绝对值不超过10的7次方的实数表示。
输出仅包含一个实数,为交的面积,保留到小数后两位。
源代码
#include <stdio.h>
double min(double a, double b) {
return a < b ? a : b;
}
double max(double a, double b) {
return a > b ? a : b;
}
int main() {
double x1, y1, x2, y2; // 第一个矩形的坐标
double a1, b1, a2, b2; // 第二个矩形的坐标
double x_min, y_min, x_max, y_max; // 交集的四个顶点坐标
double area; // 交集的面积
// 读入两个矩形的坐标
scanf("%lf %lf %lf %lf", &x1, &y1, &x2, &y2);
scanf("%lf %lf %lf %lf", &a1, &b1, &a2, &b2);
// 计算交集的四个顶点坐标
x_min = max(x1, a1);
y_min = max(y1, b1);
x_max = min(x2, a2);
y_max = min(y2, b2);
// 计算交集的面积
if (x_min < x_max && y_min < y_max) {
area = (x_max - x_min) * (y_max - y_min);
} else {
area = 0.0;
}
// 输出交集面积,保留两位小数
printf("%.2lf\n", area);
return 0;
}
对于计算交集的四个顶点坐标以及交集的面积的部分,min
和max
函数。首先读入两个矩形的坐标,然后计算交集的四个顶点坐标,即两个矩形的左上角坐标的最大值和右下角坐标的最小值。如果交集存在,则计算交集的面积;否则交集面积为0。最后输出交集面积,保留两位小数。
© 版权声明
本站资源来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!
THE END