我们的 OOP 老师给了我一个作业。尽管我的代码看起来不错,但我正面临这个问题。
我必须从用户那里获取三角形顶点的坐标,并且必须判断它是否是直角三角形。所以我简单地使用毕达哥拉斯定理来找出它,众所周知使用条件:h * h = b * b + p * p
但令人惊讶的是,这不适用于某些特定的直角三角形。这是一个这样的三角形:
顶点 A: (x, y) = (1, 3)
顶点 B: (x, y) = (1, 1)
顶点 C: (x, y) = (5, 1)
它计算完美,我通过打印计算得出了这一点,但仍然不起作用。
然后我尝试通过这种方式使用库中的sqrt()
函数cmath
: h = sqrt(b * b + p * p)
逻辑上是一样的,但它起作用了。
我想明白,为什么之前的方法不起作用?
这是我的代码的简化版本:
#include <iostream>
#include <cmath>
using namespace std;
class Vertex {
double x, y;
public:
void take_input(char …
Run Code Online (Sandbox Code Playgroud)