-3

私は次の構造体を持っています:-

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

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

次に、任意の2つの場所の間の距離を計算する必要があるため、構造体をループして、各場所のx軸とy軸を差し引いて、構造体の任意の2つの場所の間の距離を取得し、最短距離; しかし、どうすればそれができるのかわかりません:-

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

2 に答える 2

1

これがあなたの質問に対する答えです。1つの座標を修正し、他のすべての座標までの距離を計算する必要がありますが、計算を繰り返さないようにしてください。したがってi、1つの座標を修正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 に答える