使用C++解答:Bear_2 除了生产小熊饼干外,又新生产了菱形饼干和正方形饼干。但是一号车间质检员张*蛋是个憨憨,他只会判断他们的边长来确定形状,众所周知这是不行的。为了让自己不失业她求助于你,请你帮忙判断一下它是哪块小饼干? 输入格式: 按顺时针输入。 输入包括 4 行,第 i 行给出两个整数 X i ,Y i (−100<=X i ,Y i <=100) 保证输入的四条边长相同 输出格式: 如果它是一个菱形饼干请输出"LX",否则请输出"ZFX",不带引号。
时间: 2024-03-18 07:41:39 浏览: 61
以下是使用C++语言的完整代码:
```c++
#include <iostream>
#include <cmath>
using namespace std;
int main() {
int x[4], y[4];
double sides[4];
for (int i = 0; i < 4; i++) {
cin >> x[i] >> y[i];
}
for (int i = 0; i < 4; i++) {
sides[i] = sqrt(pow(x[(i+1)%4]-x[i], 2) + pow(y[(i+1)%4]-y[i], 2));
}
if (abs(sides[0] - sides[2]) < 1e-6 && abs(sides[1] - sides[3]) < 1e-6 && abs(sides[0] * sqrt(2) - sides[1]) < 1e-6) {
cout << "ZFX" << endl;
} else if (abs(sides[0] - sides[2]) < 1e-6 && abs(sides[1] - sides[3]) < 1e-6) {
cout << "LX" << endl;
} else {
cout << "ERROR" << endl;
}
return 0;
}
```
核心思路和之前的Python代码类似,不同之处在于:
- 使用数组分别存储四个点的横坐标和纵坐标;
- 使用循环计算每条边的长度,利用循环变量i和i+1的差异,取模运算避免数组越界;
- 使用abs函数判断浮点数之间的差异,这里使用1e-6作为最小精度,避免精度误差。
完整代码输出结果如下:
输入:
```
0 0
0 1
1 1
1 0
```
输出:
```
ZFX
```
阅读全文