0

したがって、それぞれに value というプロパティを持つオブジェクトの配列があります....このオブジェクトの配列を検索し、特定の範囲内の値が見つかった場合にのみコードを実行できるようにしたいと考えています。

たとえば、25 の値を指定し、5 の範囲内で検索している場合 (25 と最も近い値の差は < 5)、次のようになります。

array[0].value = 16
array[1].value = 19
array[2].value = 22

次に、必要なコードを実行します。

これについて簡単な方法はありますか?ありがとう!

4

3 に答える 3

2

Xそれが配列内のオブジェクトのクラスであると仮定します。

public void WhenInRange(IEumerable<X> array, int value, int delta, Action<X> action)
{
   var s = value - delta;
   var e = value + delta;
   foreach (var match in array.Where(x => s <= x.value && e <= x.value))
      action(match);
}

すべての一致を印刷するには、次のようにします。

WhenInRange(array, 25, 5, (x) => Console.WriteLine(x.value));
于 2013-02-08T06:06:19.037 に答える
0

擬似コード:

for every element of the array:
    let d = the absolute value of (element.value - target_value)
    if d is less than min_difference:
        do something
        break the loop

それでおしまい。あなたの質問の対応する値はtarget_value、25 とmin_difference5 になります。

于 2013-02-08T05:59:35.607 に答える
0

配列内の1 つの値が目標量内にある必要があることのみを気にする場合は、次のようにすることができます。

        float[] array = {1.0f, 10.0f, 15.7f};
        float target = 25;
        float range = 5;

        foreach (float f in array)
        {
            float temp = f - target;
            if (temp < range && temp > (-range))
            {
                //execute code here
            }
        }

編集: 最初は何らかの理由でこれらが浮動小数点数であると想定していましたが、同じコードが任意の数値ベースのデータ型のロジックです。

于 2013-02-08T06:03:42.460 に答える