C# 求表的最小值
我需要找到表中最低项的值和位置。问题是,我不知道如何指定它。我不能在int值中输入任何数字作为最小值,因为用户总是可以指定更高的值。它适用于最高值,但不适用于最小值C# 求表的最小值,c#,C#,我需要找到表中最低项的值和位置。问题是,我不知道如何指定它。我不能在int值中输入任何数字作为最小值,因为用户总是可以指定更高的值。它适用于最高值,但不适用于最小值 Console.WriteLine("Podaj wymiar tablicy."); int dlugosc = Convert.ToInt32(Console.ReadLine()); int[] tablica = new int[dlugosc]; int ma
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];因为如果所有的数字都是负数,原始代码将失败。有趣的是,如果所有数字都是负数,原始代码将正确地找到最小值。