关于#C语言#三角形的问题,如何解决?

img

img

img

img

img


题目和代码都放在照片里了,形成三角形的条件,例子是对的,不知道哪里错了

从您提供的图片来看,您的代码似乎存在两个问题:

1.在计算两个点之间距离的时候,您使用的是勾股定理,但您的计算方式存在一些问题。您应该计算两个点在x轴和y轴上的距离,然后使用勾股定理来计算它们之间的距离。因此,您应该将float dis = Mathf.Sqrt((pos1.x - pos2.x) * (pos1.y - pos2.y));改为float dis = Mathf.Sqrt(Mathf.Pow(pos1.x - pos2.x, 2) + Mathf.Pow(pos1.y - pos2.y, 2));。

2.在计算三角形面积的时候,您使用了海龙公式,但是您的计算方式也存在一些问题。您应该使用正确的海龙公式,即S = sqrt(p * (p - a) * (p - b) * (p - c)),其中p是半周长,a、b、c是三角形的三条边。因此,您应该将float s = Mathf.Sqrt(p * (p - a) * (p - b) * (p - c));改为float s = Mathf.Sqrt(p * (p - dis1) * (p - dis2) * (p - dis3));。

综上所述,您应该将以下代码:

float dis1 = Mathf.Sqrt((pos1.x - pos2.x) * (pos1.y - pos2.y));
float dis2 = Mathf.Sqrt((pos2.x - pos3.x) * (pos2.y - pos3.y));
float dis3 = Mathf.Sqrt((pos3.x - pos1.x) * (pos3.y - pos1.y));

float p = (dis1 + dis2 + dis3) / 2f;

float s = Mathf.Sqrt(p * (p - dis1) * (p - dis2) * (p - dis3));

改为:

float dis1 = Mathf.Sqrt(Mathf.Pow(pos1.x - pos2.x, 2) + Mathf.Pow(pos1.y - pos2.y, 2));
float dis2 = Mathf.Sqrt(Mathf.Pow(pos2.x - pos3.x, 2) + Mathf.Pow(pos2.y - pos3.y, 2));
float dis3 = Mathf.Sqrt(Mathf.Pow(pos3.x - pos1.x, 2) + Mathf.Pow(pos3.y - pos1.y, 2));

float p = (dis1 + dis2 + dis3) / 2f;

float s = Mathf.Sqrt(p * (p - dis1) * (p - dis2) * (p - dis3));