C++ 在随机数组中查找最小值和最大值

C++ 在随机数组中查找最小值和最大值,c++,arrays,max,min,C++,Arrays,Max,Min,在一个需要我输入一些函数(查找数组中随机数的最大/最小值、和和和平均值)的赋值中,我已经完成了所有这些函数,但对于最小值,我得到的值是-2145379808。我不确定我把事情搞砸了,我会感谢你的帮助。 迄今为止的代码: #include <cstdlib> #include <iostream> #include <ctime> using namespace std; int main(int argc, char** argv) { {

在一个需要我输入一些函数(查找数组中随机数的最大/最小值、和和和平均值)的赋值中,我已经完成了所有这些函数,但对于最小值,我得到的值是-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;
}
#包括
#包括
#包括
使用名称空间std;
int main(int argc,字符**argv){
{
cout大小;
int数组[大小];
int max=数组[0];
int min=数组[0];
srand((无符号)时间(NULL));
对于(int i=1;icout将
max
min
设置为
array
的未初始化元素永远不会有好结果。注意,您还需要初始化
sum
。您最好删除
avg
,因为您不使用它

一旦您知道数组的第一个元素是什么,您需要将
max
min
设置为
array
的第一个元素。粗略地说,您可以将
max
设置为
std::numeric\u limits::min()
min
设置为
std::numeric\u limits::max()

还要注意,
array
的边界是
array[0]
array[size-1]
。因此,您需要重新查看循环中的索引


然后,一旦它开始工作,将其装箱,并使用
std::vector
,以及类似
minmax\u元素的东西

,问题如下所示:

float avg;
float sum;
...
int max = array [0];
int min = array [0];
因为此时
数组[0]
处的值是垃圾值。
要更正代码,请按以下方式更改此行(还包括
climits
头文件)。此外,相应地更改循环索引:

float avg = 0;
float sum = 0;
...
int max = INT_MIN;
int min = INT_MAX;
以下是已更正的代码(为优化所做的一些更改)。请查看它是否正常工作:

#包括
#包括
#包括
#包括
使用名称空间std;
int main(int argc,字符**argv){
{
cout大小;
int数组[大小];
int max=int_MIN;
int min=int_MAX;
srand((无符号)时间(NULL));
对于(int i=0;iCUT< P>以确保您的代码> max 和 MIN <代码>被正确初始化,C++提供了所有类型的代码> STD::MultudioCimult。它们每个都有<代码> max())<代码>和<代码>()
成员函数返回类型的
max
min
值。在任何要查找最大值和最小值的代码中,首先要将最大值初始化为类型的最小值,反之亦然。这样,任何值都将大于
min
而小于
max

您可以使用以下类似的
std::numeric_limits
执行此操作:

int min = std::numeric_limits<int>::max()
int max = std::numeric_limits<int>::min()
int min=std::numeric\u limits::max()
int max=std::numeric_limits::min()

如果有更多的问题,请告诉我。< /P>你没有初始化变量。总是初始化你的ValueS.然后关闭。索引越界是不确定的。我认为C++的乐趣是使用了很多吹嘘的STL。在标题为“代码>第二版< /COD>”的章节之后,请参见题为<代码>示例<代码>的部分。代码> CIN >大小;int数组[大小];< /代码> -这不是标准C++,而且永远不会是(有充分理由)使用<代码> STD::向量你只需使用两行可恢复代码即可获得Min和Max。或者更好地使用.@ USS463035818:HA,让我们共同发布!有时我在工作中有困难的时候要修复一些东西,所以在这里修复总是很有趣的。)AluhanHADAD:非常正确,C++不是FORTRAN。tialised,将最小值和最大值设置为数组的第一个元素并迭代其余元素,当然与将最小值和最大值设置为其类型的极值一样合法?

int min = std::numeric_limits<int>::max()
int max = std::numeric_limits<int>::min()