-3

我有以下结构: -

public struct Cordination
{
    public int A;
    public int B;

    public Cordination(int a, int b)
    {
        A = a;
        B = b;
    }
}

然后我需要计算任意两个地方之间的距离,所以我需要遍历结构并减去每个地方的 x 轴和 y 轴以获得结构中任意两个地方之间的距离,然后返回最短距离;但我不确定我该怎么做:-

public float distanceInMeter(Cordination[] cordination)
{
    for (i //codes goes here...)
}
4

2 回答 2

1

这是您问题的答案。您需要固定一个坐标并计算到所有其他坐标的距离,但尽量不要重复计算。因此i将固定一个坐标并j遍历所有其他坐标。请注意,这j是从i + 1确保您不重复计算开始的。

public struct Cordination
{
    public int A;
    public int B;

    public Cordination(int a, int b)
    {
        A = a;
        B = b;
    }
}

public float distanceInMeter(Cordination[] cordination)
{
    float minDistance = float.MaxValue;
    for (int i = 0; i < cordination.Length - 1; i++)
    {
        for (int j = i + 1; j < cordination.Length; j++)
        {
            float dist = (float)Math.Sqrt(
                Math.Pow(cordination[i].A - cordination[j].A, 2.0) +
                Math.Pow(cordination[i].B - cordination[j].B, 2.0));
            if (dist < minDistance)
                minDistance = dist;
        }
    }
    return minDistance;
}
于 2012-10-21T17:52:31.727 回答
0

好的,您应该生成一个列表

 List<Cordination> TestList = new List<Cordination>();

接下来,您将元素放入列表中

 TestList.Add(new Cordination(5,6);

现在您可以通过列表使用 foreach 循环或 for 循环

  foreach (Cordination i in TestList)
    {
       Console.WriteLine(i.A);
    }

如果您对此有更多疑问:http: //msdn.microsoft.com/en-us/library/6sh2ey19.aspx

于 2012-10-21T17:51:21.550 回答