C# 求表的最小值

C# 求表的最小值,c#,C#,我需要找到表中最低项的值和位置。问题是,我不知道如何指定它。我不能在int值中输入任何数字作为最小值,因为用户总是可以指定更高的值。它适用于最高值,但不适用于最小值 Console.WriteLine("Podaj wymiar tablicy."); int dlugosc = Convert.ToInt32(Console.ReadLine()); int[] tablica = new int[dlugosc]; int ma

我需要找到表中最低项的值和位置。问题是,我不知道如何指定它。我不能在int值中输入任何数字作为最小值,因为用户总是可以指定更高的值。它适用于最高值,但不适用于最小值

        Console.WriteLine("Podaj wymiar tablicy.");
        int dlugosc = Convert.ToInt32(Console.ReadLine());
        int[] tablica = new int[dlugosc];
        int max = 0;
        int min = tablica[0];
        for (int i = 0; i < tablica.Length; i++)
        {
            Console.WriteLine("Podaj wartosc {0} elementu.", i + 1);
            tablica[i] = Convert.ToInt32(Console.ReadLine());
        }

        for (int i = 0; i < tablica.Length; i++)
        {
            while (tablica[i] > max)
            {
                max = tablica[i];
            }
        }
        for (int x = 0; x < tablica.Length; x++)
        {
            while (tablica[x] < min)
            {
                min = tablica[x];
            }
        }
        int najmniejsze_miejsce = Array.IndexOf(tablica, min);
        int najwieksze_miejsce = Array.IndexOf(tablica, max);
        Console.WriteLine("Najwyzsza wartosc tablicy to {0}.", max);
        Console.WriteLine("Najwieksza wartosc wystepuje na miejscu {0}.", najwieksze_miejsce);
        Console.WriteLine("Najniższa wartość tablicy to {0}.", min);
        Console.WriteLine("Najnizsza wartosc wystepuje na miejscu {0}", najmniejsze_miejsce);
        Console.ReadKey();
您只需使用:

Console.WriteLine(tablica.Min());

由于您使用的是整数数组,因此当前代码如下:

int min = tablica[0];
for (int i = 0; i < tablica.Length; i++)
{
    Console.WriteLine("Podaj wartosc {0} elementu.", i + 1);
    tablica[i] = Convert.ToInt32(Console.ReadLine());
}
在数组初始化之前声明的最小值意味着它将仅为零。除非是负数,否则数组中的任何值都不能小于

要修复此问题,应在数组初始化后声明min:

for (int i = 0; i < tablica.Length; i++)
{
    Console.WriteLine("Podaj wartosc {0} elementu.", i + 1);
    tablica[i] = Convert.ToInt32(Console.ReadLine());
}
int min = tablica[0];`

您可以在表中找到第一次出现的最小值

int minIndex = Array.IndexOf(tablica, tablica.Min());
或者很简单:

Console.WriteLine(Convert.ToString(Array.IndexOf(tablica, tablica.Min())));

当您确实需要执行扫描时,通常会在循环之前将最小值设置为Int.MaxValue,将最大值设置为Int.MinValue,然后保证在第一个元素和任何提高任一值的元素上设置该值

然后,您可以在一个循环中完成所有操作,而不需要在表示if时使用。您还可以边走边跟踪索引:

int max = Int.MinValue;
int min = Int.MaxValue;
int maxindex = -1;
int minindex = -1;

for (int i = 0; i < tablica.Length; i++)
{
   if (tablica[i] > max) { max = tablica[i]; maxindex = i; }
   if (tablica[i] < min) { min = tablica[i]; minindex = i; }
}

别忘了添加usingsystem.Linq;当然。我不知道为什么有人否决了你,但你的答案是最正确的。但是代码应该使用int max=tablica[0];因为如果所有的数字都是负数,原始代码将失败。有趣的是,如果所有数字都是负数,原始代码将正确地找到最小值。