使用数组作为计数器的错误输出
Incorrect output using array as counter
我正试图通过尝试codeabbey.com上的问题来教自己编程。
我没有得到这个问题的正确输出。
数据输入:问题:这是一个长度为M的数组,其中数字的范围为1…N,其中N小于等于20。你要遍历它,并计算每个数字出现的次数。
输入数据第一行包含M和N。第二行(相当长的)将包含M个用空格分隔的数字。答案应该包含精确的N个值,用空格分隔。第一次应该给出1-s的量,第二次应该给出2-s的量,以此类推。
10 31 2 3 2 3 1 1 1 1 1 3
正确输出:
我输出:5 2 3
7 3 4
你可以在这里查看
我的代码:#include <iostream>
using namespace std;
int main()
{
int arrayLength,range,a;
cin>>arrayLength>>range;
int array[20];
array[20]={0};
for(int i=0; i<arrayLength; i++)
{
cin>>a;
++array[a-1];
}
for(a=0; a<range; a++)
{
cout<<array[a]<<" ";
}
return 0;
}
没有任何错误消息或警告。此外,如果您有任何改进代码的建议,那就太好了。
int array[20];
array[20]={0};
是错误的,因为它使数组未初始化,并试图初始化第21个元素(这是未定义的行为,因为您的数组只有20个元素,请记住索引从0
开始)。使用
int array[20] = {0}; // this will initialize all elements to 0
和您的代码将按预期工作。
array[20]={0};
初始化第21个元素(不存在)为0
。所以你必须使用int array[20] = {0};
,它将所有20个元素初始化为零。
同样在代码中,您没有将元素存储到数组中。您只是在读取输入时增加相应的计数。如果是这样,为什么需要将数组初始化为maxlimit呢?只要根据需要声明数组即可。在你的例子中,
int array[range] = {0};
初始化一个包含三个元素的数组(此处为range =3)
相关文章:
- 显示错误输出的简单数组排序程序
- Dijkstra 中的错误输出
- 自定义runtime_error,如果我在 #what 中使用#c_str(),则错误输出始终为空
- 流字符串错误输出
- C++ 异常处理错误输出
- C ++中的错误输出,i = 65530,当我们打印i的值时,它给出-6状态65530
- SSE和iostream:浮点类型的错误输出
- C++将 popen 错误输出读取为字符串
- 部分透视/高斯消除 - 交换列而不是产生错误输出的行
- C++,向量:获得包含 0 的错误输出
- 数组函数错误输出
- CC1plus 错误:输出文件名指定两次
- 字符串错误输出
- 子斯特的错误输出
- 对大量c++错误输出完全一无所知.我认为这与预定义的函数和迭代器有关
- 简单程序的错误输出
- XCode调试器lldb中断,没有错误输出,但程序运行良好
- std::string::append(std::string)错误输出
- 查看大错误输出的顶行
- 使用结构的错误输出