-1

リストと配列があります。リストに属する範囲の配列内の各要素を見つけたいと思いました。ここにいくつかのコードがあります:

int[] number = {1, 2, 3, 5};
public List<double> m = new List<double>();
m.add(1);
m.add(1.5);
m.add(2.6);
m.add(4);
m.add(50);

例:例2の配列の要素を取得すると、範囲(リスト内の任意の数値の間)がリスト==> 1.5および2.6で回答する場所がわかります

この出力を返すメソッドが必要です:

find 1 range is {1} to {1.5} and 2 range is {1.5} to {2.6}

4

4 に答える 4

0

私はあなたが望むものを手に入れたことを願っています。

void Main()
{
    var numbers =new [] {1, 2, 3, 5};

    //ordering to make sure that ranges is ascending order
    var orderedRanges = new []{1, 1.5, 2.6, 4, 50}.OrderBy(v => v);

    var valuesInRanges = numbers.Select(number => 
                          FormatValueInRange(
                            number,
                            orderedRanges.Last(range => range <= number ),
                            orderedRanges.First(range => range > number )));

    var result = "Find " + string.Join("and ", valuesInRanges);

    Console.WriteLine (result);
}

private string FormatValueInRange(double val, double lower, double upper)
{
    return string.Format(@"{0} is {{{1}}} to {{{2}}} ", val, lower, upper);
}

版画:

Find 1 is {1} to {1.5} and 2 is {1.5} to {2.6} and 3 is {2.6} to {4} and 5 is {4} to {50} 
于 2013-01-20T13:01:31.300 に答える
0

次のロジックを使用する必要があります (疑似コードで、例の番号を使用)。

rangeStart = 1
rangeEnd = 7

numberOne = 3.7

if numberOne >= rangestart and numberOne <= rangeEnd
    // number is in range

numberTwo = 12

if numberTwo >= rangestart and numberOne <= rangeEnd
    // number is NOT in range

これにより、問題を解決するための正しい方向が示されるはずです。試してみて、問題がある場合はお知らせください。

于 2013-01-20T13:04:18.063 に答える
0
int[] numbers = new int[] { 1, 2, 3, 5 };
List<double> m = new List<double>();
m.Add(1);
m.Add(1.5);
m.Add(2.6);
m.Add(4);
m.Add(50);

foreach (int n in numbers)
{
    for (int i = 0; i < m.Count; i++)
    {
        try
        {
            if (m[i] <= n && m[i + 1] >= n)
                MessageBox.Show(
                    string.Format("{0} is between {1} and {2}",
                    n, m[i], m[i + 1]));
        }
        catch (Exception){ }
    }
}
于 2013-01-20T13:05:36.267 に答える
0

LINQ を使用できます。

 List<double> m = new List<double>();
   m.Add(1);
   m.Add(1.5);
   m.Add(2.6);
   m.Add(4);
   m.Add(50);

   m.Sort();

   int[] numbers = { 1, 2, 3, 5 };
   foreach (var item in numbers)
   {
        double min = m.Where(x => x <= item).Last();
        double max = m.Where(x => x > item).First();

        Console.WriteLine("find {0} range is {1} to {2}", item, min, max);
   }
于 2013-01-20T13:07:51.117 に答える