在随机数组中查找最小值和最大值
Finding min and max value in a random array
处理一个要求我投入某些功能的作业(查找最大值/min值,阵列中随机数的总和和平均值(,我已经设法完成了所有它们,但以最小值为单位,我的价值为-2145379808。我不确定我在哪里搞砸了,我会很高兴的帮助。到目前为止的代码:
#include <cstdlib>
#include <iostream>
#include <ctime>
using namespace std;
int main(int argc, char** argv) {
{
cout << "Enter array size " << endl;
}
float avg;
float sum;
int size;
cin >> size;
int array[size];
int max = array [0];
int min = array [0];
srand((unsigned)time(NULL));
for (int i = 1; i < size + 1; i++)
{
array[i] = 1+rand()%100 ;
sum += array[i];
cout << "number " << i << " = "<< array[i] << endl;
}
for (int x = 1; x < size; x++){
if (array[x] > max){
max = array[x];
}
if (array[x] < min){
min = array[x];
}
}
cout << "nmax = " << max << endl;
cout << "nmin = " << min << endl;
cout << "nsum = "<< sum << endl;
cout << "navg = " << sum / size << endl;
return 0;
}
将max
和min
设置为array
的非初始化元素永远不会结束。在此注释中,您还需要初始化sum
。由于不使用它,因此您不妨删除avg
。
一旦知道它是什么,就需要将max
和min
设置为array
的第一个元素。粗鲁,您可以将max
设置为std::numeric_limits<int>::min()
,将min
设置为std::numeric_limits<int>::max()
。
还请注意, array
的界限是 array[0]
到 array[size - 1]
。因此,您需要重新审视循环中的索引。
然后,一旦您可以使用它,并使用std::vector<int>
,然后使用minmax_element
:http://en.cppreference.com/w/cpp/algorithm/minmax_element
问题是以下行:
float avg;
float sum;
...
int max = array [0];
int min = array [0];
因为此时array [0]
的值是垃圾值。
要纠正您的代码如下(还包括climits
标头文件(。另外,相应地更改循环索引:
float avg = 0;
float sum = 0;
...
int max = INT_MIN;
int min = INT_MAX;
以下是校正的代码(进行优化的一些更改(。在这里看到它:
#include <cstdlib>
#include <iostream>
#include <ctime>
#include <climits>
using namespace std;
int main(int argc, char** argv) {
{
cout << "Enter array size " << endl;
}
float sum = 0;
int size;
cin >> size;
int array[size];
int max = INT_MIN;
int min = INT_MAX;
srand((unsigned)time(NULL));
for (int i = 0; i < size; i++)
{
array[i] = 1+rand()%100 ;
sum += array[i];
cout << "number " << i << " = "<< array[i] << endl;
if (array[i] > max){
max = array[i];
}
if (array[i] < min){
min = array[i];
}
}
cout << "nmax = " << max << endl;
cout << "nmin = " << min << endl;
cout << "nsum = "<< sum << endl;
cout << "navg = " << sum / size << endl;
return 0;
}
确保正确初始化max
和min
,C 为所有类型提供std::numeric_limits
。他们每个都有max()
和min()
成员功能,以返回类型的max
和min
值。在任何代码中,您都希望找到最大值和最小值,您希望首先将最大值初始化至最小值,反之亦然。这样,任何值都将大于您的min
,并且比max
小。
您使用std::numeric_limits
类似:
int min = std::numeric_limits<int>::max()
int max = std::numeric_limits<int>::min()
让我知道您是否还有更多问题。
- 查找矩阵C++中每一列和每一行的最小和最大元素
- 如何在数组中交换最小和最大的位置?
- 需要使用模板查找数组的第二个最小和最小值
- 使用 std::min_element、std::max_element 查找矢量中的最小和最大元素
- 为什么我不能使用最小和最大这两个词作为变量名称?
- 在运行时为随机分布类成员设置最小和最大边界?
- 如何使用气泡排序从最小到最大对 4 个数组进行排序? C++
- 如何拒绝 cin 中的字符输入并定义最小和最大整数值
- 类型 *阵列的最小或最大值的类功能 *
- C++ 100 万个变量名称的最小和最大变量名称长度是多少
- 想要以正弦曲线的形式在循环中连续将值从最小变为最大
- 数组内存地址总是按最小到最大的顺序排列吗
- 使用向量而不是数组从最小到最大对数字进行排序C++
- 在 c++ 中给出两个整数向量(大小和类型相同),我想从最小到最大元素对一个进行排序,并更改第二个向量的顺序
- 在用户定义结构的向量中查找最小和最大元素的索引
- 二进制搜索,用于查找排序数组中比给定值最小和最大的元素
- c++中的函数如何以最小的复制返回值或引用?
- 我如何确定我可以传递给编译器选项的最小和最大值
- 如何为每个光栅带设置最小和最大颜色值(使用GDAL)
- 在c++中最小化分支-如果值是非零则递增