尝试用用户输入填充数组
Trying to fill an array with user input
我遇到了一个问题。我正在尝试将用户输入的值存储到数组中,直到他们使用 do-while 循环输入 -1。这是我的代码示例:
int j=0;
do{
cin >> nodes[j];
j++;
}
while (nodes[j] != -1);
有人可以告诉我为什么这不起作用以及更好的方法是什么?谢谢!
它不起作用,因为您在接收输入后和读取输入之前递增了索引结束 (j)。您可以改为比较节点[j-1] == -1
同样重要的是,如果您没有输入最大数量的元素,您可能会超出数组。
在进行比较nodes[j] != -1
时,j
不是已经递增了吗?
另外,我认为我们不想将哨兵值-1
存储到数组中。
for( int j = 0; j != NodeMax; ++j) {
int tmp = 0;
cin >> tmp;
if( tmp == -1 ) {
break;
}
node[ j ] = tmp;
}
正如@Arun提到的,选中nodes[j] != -1
时j
已经增加。
修改如下:
do {
cin >> nodes[j];
} while (nodes[j++] != -1);
语句while (nodes[j] != -1);
永远不会为真,因为您在检查值之前递增j
并移动到下一个索引。更好的方法是:
do{
cin >> nodes[j];
}
while (j < SIZE && nodes[j++] != -1);
nodes[j]
不是您输入的nodes[j]
,因为它已被++
,试试这个: while(cin>>node[j++]);
你在节点[j]!=-1检查之前递增j。要么这样做
int j=-1;
do{
j++;
cin >> nodes[j];
}
while (nodes[j] != -1);
或
int j=0;
do{
cin >> nodes[j];
}
while (nodes[j++] != -1);
或
int j=0;
while(cin>>nodes[j] && nodes[j]!=-1)
{
j++;
}
相关文章:
- C++ 填充数组时遇到问题
- 如何使用同时设置计数和填充数组的函数
- 如何使填充数组的函数发送到函数?而不是其参数中的数组
- 如何使用文件填充数组并将其与用户输入C 进行比较
- 使用 memset 填充数组会显示垃圾
- Visual Studio从文件中填充数组时中断
- 分段 填充数组时出错
- 用不同的值填充数组/矢量的边缘和中心
- 使用相同的数据填充数组对象或使用指针
- 是否可以使用三元运算符"?"在 C/C++ 中填充数组列表?
- 填充数组(写入位置0x00000000的访问冲突)
- 从文件中读取输入并填充数组以存储数据供以后使用
- c++当循环在填充数组时没有正确终止时,希望能帮助退出此循环
- 填充数组会导致数组周围的堆栈损坏
- Cuda有效地将数据插入到未排序的填充数组中
- 填充数组的 C++ 函数
- 访问部分填充数组上的第一个打开元素
- 将一个字节数组从C#传递到C++填充数组的C++com对象中
- 如何使用向量中的信息填充数组并从数组中选择随机项
- C,填充数组使用dec2bin转换器