使用迭代在一个暗淡的数组中找到最低值(不能使用 max/min)
Finding lowest Value in one dim array using iteration (Can't use max/min)
我目前正在学校学习 c#。
我的导师要求我:
- 使用迭代确定一维数组的最小值。
- 我不能使用常规方法,例如 max 或 min 函数。它必须使用迭代来完成。
我正在从用户输入中获取数组值。
这是我下面的,但我觉得这不是他真正想要的。
- 编辑 -
我不能使用 maxvalue 属性。那超出了他所教导的范围。对于那些正在寻找更具体问题的人。
没有向我展示完整的代码示例。在不使用最小值或最大值属性的情况下,我还有哪些其他方法可以解决这个问题?
我很抱歉没有比这更清楚。这只是我课程的第 3 周,所以我对编程的总体理解很低。
while (j < myDoubles.Length)
{
double myDoubles1 = myDoubles[j];
j++;
double myDoubles2 = myDoubles[j];
j++;
double myDoubles3 = myDoubles[j];
j++;
double myDoubles4 = myDoubles[j];
j++;
double myDoubles5 = myDoubles[j];
j++;
while (myDoubles1 < myDoubles2 && myDoubles1 < myDoubles3 && myDoubles1 < myDoubles4 && myDoubles1 < myDoubles5)
{
Console.WriteLine("myDoubles[1] is the lowest");
break;
}
while (myDoubles2 < myDoubles1 && myDoubles2 < myDoubles3 && myDoubles2 < myDoubles4 && myDoubles2 < myDoubles5)
{
Console.WriteLine("myDoubles[2] is the lowest");
break;
}
while (myDoubles3 < myDoubles1 && myDoubles3 < myDoubles2 && myDoubles3 < myDoubles4 && myDoubles3 < myDoubles5)
{
Console.WriteLine("myDoubles[3] is the lowest");
break;
}
while (myDoubles4 < myDoubles1 && myDoubles4 < myDoubles2 && myDoubles4 < myDoubles3 && myDoubles4 < myDoubles5)
{
Console.WriteLine("myDoubles[4] is the lowest");
break;
}
while (myDoubles5 < myDoubles1 && myDoubles5 < myDoubles2 && myDoubles5 < myDoubles3 && myDoubles5 < myDoubles4)
{
Console.WriteLine("myDoubles[5] is the lowest");
break;
}
试试这个:
double minValue(double[] myDoubles){
double min = Double.MaxValue;
for(int i=0; i<myDoubles.Length; i++)
{
if(myDoubles[i]<min)
min = myDoubles[i];
}
return min;
}
您需要将 min
变量设置为 MaxValue
,因为您不知道最大值是多少。例如,如果您的用户给您 1000 具有最小值,但您将变量设置为 0,则最终最小值将为 0, 显然是错误的!
您不能简单地执行以下操作吗:这是求最大值。
public static double? FindMaximum(double[] container)
{
double? max = null;
foreach(var content in contaner)
if(content > max || max == null)
max = content as double;
return max;
}
这种方法非常简单,您遍历数组中的每个项目。然后将最大值与内容进行比较,如果它高于先前的值,它将修改变量。然后 returns 数组中的最大值。
这不是理想的方法之一,而是一种解决方案。
我最终做到了这一点,完全满足了老师的要求。感谢 Greg 和 Ludovic 提供的示例。您对找出此作业的答案提供了很大帮助!
int j = 0;
double min = 0;
for (int i = 0; i < myDoubles.Length; i++)
{
if (i == 0)
{
min = myDoubles[i];
}
else if (min > myDoubles[i])
{
min = myDoubles[i];
j = i;
}
}
Console.WriteLine("myDoubles[{0}] = {1} is the lowest value in the array", j, min);
我目前正在学校学习 c#。
我的导师要求我:
- 使用迭代确定一维数组的最小值。
- 我不能使用常规方法,例如 max 或 min 函数。它必须使用迭代来完成。
我正在从用户输入中获取数组值。
这是我下面的,但我觉得这不是他真正想要的。 - 编辑 - 我不能使用 maxvalue 属性。那超出了他所教导的范围。对于那些正在寻找更具体问题的人。
没有向我展示完整的代码示例。在不使用最小值或最大值属性的情况下,我还有哪些其他方法可以解决这个问题?
我很抱歉没有比这更清楚。这只是我课程的第 3 周,所以我对编程的总体理解很低。
while (j < myDoubles.Length)
{
double myDoubles1 = myDoubles[j];
j++;
double myDoubles2 = myDoubles[j];
j++;
double myDoubles3 = myDoubles[j];
j++;
double myDoubles4 = myDoubles[j];
j++;
double myDoubles5 = myDoubles[j];
j++;
while (myDoubles1 < myDoubles2 && myDoubles1 < myDoubles3 && myDoubles1 < myDoubles4 && myDoubles1 < myDoubles5)
{
Console.WriteLine("myDoubles[1] is the lowest");
break;
}
while (myDoubles2 < myDoubles1 && myDoubles2 < myDoubles3 && myDoubles2 < myDoubles4 && myDoubles2 < myDoubles5)
{
Console.WriteLine("myDoubles[2] is the lowest");
break;
}
while (myDoubles3 < myDoubles1 && myDoubles3 < myDoubles2 && myDoubles3 < myDoubles4 && myDoubles3 < myDoubles5)
{
Console.WriteLine("myDoubles[3] is the lowest");
break;
}
while (myDoubles4 < myDoubles1 && myDoubles4 < myDoubles2 && myDoubles4 < myDoubles3 && myDoubles4 < myDoubles5)
{
Console.WriteLine("myDoubles[4] is the lowest");
break;
}
while (myDoubles5 < myDoubles1 && myDoubles5 < myDoubles2 && myDoubles5 < myDoubles3 && myDoubles5 < myDoubles4)
{
Console.WriteLine("myDoubles[5] is the lowest");
break;
}
试试这个:
double minValue(double[] myDoubles){
double min = Double.MaxValue;
for(int i=0; i<myDoubles.Length; i++)
{
if(myDoubles[i]<min)
min = myDoubles[i];
}
return min;
}
您需要将 min
变量设置为 MaxValue
,因为您不知道最大值是多少。例如,如果您的用户给您 1000 具有最小值,但您将变量设置为 0,则最终最小值将为 0, 显然是错误的!
您不能简单地执行以下操作吗:这是求最大值。
public static double? FindMaximum(double[] container)
{
double? max = null;
foreach(var content in contaner)
if(content > max || max == null)
max = content as double;
return max;
}
这种方法非常简单,您遍历数组中的每个项目。然后将最大值与内容进行比较,如果它高于先前的值,它将修改变量。然后 returns 数组中的最大值。
这不是理想的方法之一,而是一种解决方案。
我最终做到了这一点,完全满足了老师的要求。感谢 Greg 和 Ludovic 提供的示例。您对找出此作业的答案提供了很大帮助!
int j = 0;
double min = 0;
for (int i = 0; i < myDoubles.Length; i++)
{
if (i == 0)
{
min = myDoubles[i];
}
else if (min > myDoubles[i])
{
min = myDoubles[i];
j = i;
}
}
Console.WriteLine("myDoubles[{0}] = {1} is the lowest value in the array", j, min);