C++查找最大值和最小值的功能
C++ function to find max & minimum values
我正在尝试创建一个函数,一旦调用,它将从数据文件中读取值并给出四个输出:最大正值、最小正值、最大负值和最小负值。如果没有正值,则应输出"无正值",负值也是如此。我遇到的主要问题是让它返回正确的最小负值。
这是我到目前为止所拥有的。
void maxMinimum (double x[], int n)
{
int i;
double posMaximum;
double posMinimum;
double negMaximum;
double negMinimum;
double max;
double min;
posMaximum = x[0];
for (i=0; i <= n-1; i++)
{
if(x[i] > posMaximum)
posMaximum = x[i];
}
cout << " Maximum positive value = " << fixed << setprecision(2) << setw(8) << right << posMaximum << endl;
posMinimum = x[0];
for (i=0; i <= n-1; i++)
{
if(x[i] < posMinimum) if(x[i] > 0.0)
posMinimum = x[i];
}
cout << " Minimum positive value = " << fixed << setprecision(2) << setw(8) << right << posMinimum << endl;
negMaximum = x[0];
for (i=0; i <= n-1; i++)
{
if(x[i] < negMaximum) if(x[i] < 0.0)
negMaximum = x[i];
}
cout << " Maximum negative value = " << fixed << setprecision(2) << setw(8) << right << negMaximum << endl;
negMinimum = x[0];
for (i=0; i <= n-1; i++)
{
if (x[i] < 0.0 && x[i] < negMaximum)
negMinimum = x[i];
}
cout << " Minimum negative value = " << fixed << setprecision(2) << setw(8) << right << negMinimum << endl << endl;
max = x[0];
for (i=0; i <= n-1; i++)
{
if(x[i] > max)
max = x[i];
}
min = x[0];
for (i=0; i <= n-1; i++)
{
if(x[i] < min)
min = x[i];
}
if(max < 0.0)
cout << " No positive values" << endl;
if(min >= 0.0)
cout << " No negative values" << endl << endl;
}
执行时,函数将返回最小负值的正值。由于if (x[i] < 0.0 && x[i] < negMaximum)
,这对我来说毫无意义.有人可以告诉我我错过了什么吗?
注意:最小负值是指最接近零的值。最大负值离零最远。
提前感谢!
negMinimum将大于negMaximum,如-5>-30。您还必须创建一个临时变量,否则 negMinimum 将仅等于选中的最后一个大于 negMax 的负值。例如,您的数据是 {0,-80,5,-2,6,-8} negMinimum 将等于 -8,因为 -8 <0 和 -8> -80。因此,您需要将 x[i]
negMinimum = x[0];
double temp = negMaximum
for (i=0; i <= n-1; i++)
{
if ((x[i] < 0.0) && (x[i] > temp))
{
negMinimum = x[i];
temp = negMinimum;
}
尝试简化您的设计。即尝试编写这样的四种方法
double minPositive;
void nextValueForMinPositive(double next);
void maxMinimum(double x[], int n) {
if (n <= 0) return;
minPositive = x[0]; //std::numeric_limits<double>::max();
std::for_each(x, x + n, nextValueForMinPositive);
}
void nextValueForMinPositive(double next) {
if (next > 0.0 && next < minPositive)
minPositive = next;
}
相关文章:
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- 使用递归的数组的最小值.这是怎么回事
- 如何创建一个函数来计算并返回平均值、最大值和最小值
- 在二维数组中查找最小值和最大值?
- 有没有办法使用递归函数找到数组中最小值的 INDEX?C++
- 程序以使用 C++ 中的 while 循环查找一组数字的最小值
- 查找数组中第一个最小值和最后一个最大值元素之间的算术平均值
- C++ 函数,用于查找传入的 N 个数字的平均值、总和、最小值和最大值
- txt 文件中浮点数的最大和最小值
- 余数运算符的等效操作,用于处理低于允许的最小值
- 需要使用模板查找数组的第二个最小和最小值
- CUDA - 将 float3 数组的 (x,y,z) 分量的最小值/最大值分开?
- 查找包含 N 个元素的数组的最小值和最大值
- 错误C++在Visual Studio 2019中使用numeric_limits的长双精度最小值/最大值
- 是否存在用于 C 或 C++ 中常见数学运算(例如最小值、最大值和平均值)的可导入库?
- 如何在 c++ 中创建对的优先级队列.这会弹出具有最小值的元素.默认的弹出最大值
- 将最小值整数转换为无符号长整型
- 查找 std::vector 中的最小值和最大值 std::p air
- 如何找到每行的最大值和最小值
- C++查找最大值和最小值的功能