最大输出不正确
Max output is incorrect
试图计算数组中随机数的最大值和最小值,我不确定我在这里做错了什么。我一直在努力弄清楚,我已经到了智慧的尽头。也许你们中的一个人可以帮忙?
#include <iostream>
#include <stdlib.h>
#include <ctime>
using namespace std;
int main() {
int *sora;
int num;
int min;
int max;
cout<< "Enter the size : " ;
cin >> num;
cout<< endl;
sora = new int [num];
max= sora[0];
min= sora[0];
srand((unsigned)time(0));
for(int x=0;x<num; x++) {
sora[x]=rand()%100;
if(min > sora[x]) {
min=sora[x];
}
else if (max < sora[x]) {
max=sora[x];
}
cout<< sora[x] << endl;
}
cout<< "Maximum value is: " << max << endl << "Minimum value is: " << min;
}
if(min > sora[x]) {
min=sora[x];
}
else if (max < sora[x])
{
max=sora[x];
}
有问题。仅当满足第一个 if 时,才输入第二个 else if
语句。但是第二个if
必须始终执行。请按如下方式更改上述块
if(min > sora[x]) {
min = sora[x];
}
if (max < sora[x]) {
max = sora[x];
}
而且您还使用未初始化的区域进行比较。如果仅使用正数
max = 0;
min = UINT_MAX;
如果您也使用负数,则
max = INT_MIN;
min = INT_MAX;
您必须为这些宏包含<limits.h>
。
当您
执行max= sora[0];
和min= sora[0];
时,您将最小值和最大值初始化为未定义的值
此外,您有一个不一定想要的else
。第一个值将是最小值和最大值。您可以从设置开始 max=0
和 min=99
,这应该可以解决该特定问题。
sora = new int [num];
max= sora[0];
min= sora[0];
此行使用垃圾初始化 int 数组,并将 max 和 min 设置为垃圾值。
您有两种选择:
开始时,将最大值初始化为可能的最低值 (INT_MIN),并将最小值初始化为可能的最高值 (INT_MAX)。
首先创建一个随机值并将其分配给 sora[0] 并将 max 和 min 初始化为该值。之后初始化 [1..num]
您正在读取未初始化的内存位置:
sora = new int [num];
max= sora[0];
min= sora[0];
使用 new
创建数组不会初始化其内容。
这会导致所谓的未定义行为,这意味着几乎任何事情都可能发生。在这种情况下,它可能很普通:一些任意值(很可能在 0-99 的 rand()%100
范围之外)以最小值和最大值存储,通常会导致不正确的结果。
相反,请
// must #include <limits>
int max = std::numeric_limits<int>::min();
int min = std::numeric_limits<int>::max();
甚至只是
int max = 0;
int min = 99;
因为您的范围是预定义的。
相关文章:
- 不正确的比较和交换计数器输出用于快速排序功能
- Windows 10命令提示符的输出不正确
- 数组为此合并排序函数提供了正确的输出,但向量给出了不正确的输出.出了什么问题?
- C++ - 为什么 unicode 输出不正确?
- 连接的组件程序产生不正确的输出
- 我的动态链接队列在同一输出流中调用时不正确地输出三个返回函数
- 我的叉子输出不正确
- 输出使用 cout 转换为 ASCII 的文本时输出格式不正确,C++
- 堆排序,我无法弄清楚我的代码出了什么问题,输出顺序不正确
- C++使用 CEIL 和长度输出不正确的值
- 使用 iconv 进行 UTF8 转换的输出不正确
- C strftime()输出不正确
- 不正确的输出和变量未用Eclipse CDT初始化构造函数
- 当行数和列不匹配时,输出不正确
- 合并排序不正确的输出 c++
- 从堆栈中读取字符后,如何修复不正确的文件输出
- C++ 嵌套循环输出不正确
- 矩阵和矢量乘法,输出不正确的产品
- 我对这个问题有问题,我的输出不正确
- 测试整数是否在范围内时,逻辑错误和不正确输出