1

配列に格納されているすべての整数の中で、0 より大きい最小値を見つける必要があります。私はスタックオーバーフローでそれを行ういくつかの方法を試しましたが、私の最小値はすべての場合でまだ 0 です。コードを機能させるには、コードの何を変更すればよいですか?

int[] userInput = new int[1000];
        int counter;

        Console.WriteLine ("Please input some numbers");

        for (counter = 0; counter < userInput.Length; counter++) {
            string line = Console.ReadLine ();

            if (line == "" || line == "stop") {
                break;
            } else {
                int.TryParse (line, out userInput [counter]);
            }
        }
        int min = 0;
        for(int i = 0; i < userInput.Length; i++)
        {
            if(userInput[i] > 0)
            {
                userInput[i] = min;
                break;
            }
        }
        for(int i = 0; i < userInput.Length; i++)
        {
            if(userInput[i] < min && userInput[i] > 0)
            {
                min = userInput [i];
            }
        }
        Console.WriteLine(min);
    }
}

}

LINQを使わずにやりたいです。

4

9 に答える 9

2

例。Praveen の回答を使用できますが、これは単なる代替手段です。

int[] numbers = { -1, 0, 1, 2, 3, 4, 5 };

public int getMinimum(int[] array)
{
    // Since you need larger than 0
    int minimum = 1;

    foreach (int elem in array)
    {
        minimum = Math.Min(minimum, elem);
    }

    return minimum;
}

したがって、呼び出しgetMinimum(numbers)は返されます1

それが役に立てば幸い。

于 2013-09-02T12:28:55.267 に答える
0

一連の値の中から最大値/最小値を取得することは、非常に一般的な (そして最終的には些細な) プログラミングの問題です。

あなたの投稿は、同じ問題の特殊な例です。あなたの場合、一連の整数の中で最小の正の値を取得したいと考えています。

あなたのコードはほぼ正しいです。for2 番目のブロックの次の行のみを置き換えます。

 min = userInput[i];
于 2013-09-02T12:29:05.070 に答える
-1
array1.Min()

これを見る

Min メソッドを使用すると、変換後の最小要素または最小値を見つけます。

于 2013-09-02T12:22:30.450 に答える