如何循环结构

时间:2012-10-21 17:40:39

标签: c#

我有以下结构: -

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...)
}

2 个答案:

答案 0 :(得分:1)

以下是您问题的答案。您需要修复一个坐标并计算与其他坐标的距离,但不要重复计算。因此i将修复一个坐标,j将遍历所有其他坐标。请注意,ji + 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;
}

答案 1 :(得分: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