两点之间的距离在数组C ++中起作用

时间:2017-12-03 20:26:45

标签: c++

我在理解这个功能正在做什么时遇到了问题,我知道这与找到两点之间的距离有关,但我不确切地知道这是怎么回事......

double closestPoints(double points[], int n)
{
double closest = 100.0;

for (int p1 = 0; p1 < n; p1++)
{
    for (int p2 = 0; p2 < n; p2++)
    {
        if (p1 != p2 && abs(points[p1] - points[p2]) < closest)
        {
            closest = abs(points[p1] - points[p2]);
        }
    }
}
return closest;
}

有人能帮我理解吗?

2 个答案:

答案 0 :(得分:2)

好的,所以使用2个for-statements你只需选择所有点的组合(所以将每个点组合在一起)。

if(p1 != p2)表示如果p1指向与p2相同的点,则忽略它们(因为您无法计算一点之间的距离。

abs(points[p1] - points[p2]) < closest如果2个选定点之间的距离小于当前最小距离,则将当前最小距离设置为此距离。

PS。请注意abs(points[p1] - points[p2])是计算线上点之间距离的公式。

答案 1 :(得分:0)

这段代码采用了一系列双打,找到了points中哪一个最接近,并记录了它们的活动距离。而不是double closest = 100你可以做double closest = abs(points[0] - points[1]);