我有以下结构: -
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...)
}
答案 0 :(得分: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;
}
答案 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