输入错误的C ++数组

时间:2015-04-25 16:57:53

标签: c++

所以我把这个程序编写成代码来读取多个整数,然后它应该反向读取数组。但是,它只读回所有0

while (true)
{
    cin >> input;
    if (input == -1 && gotStuff == false) {return 0;}
    else if (input == -1 && gotStuff == true) {break;}
    else
    {
        inputData[pos1] = input;
        pos1 ++;
        gotStuff = true;
    }
}

for (int i = pos1; i >= 0; i--)
{
    outputData[pos2] = inputData[pos1];
    pos2 ++;

    cout << outputData[pos1] << " ";
}

为什么这个读数全部为0?

2 个答案:

答案 0 :(得分:5)

你这里有一个明显的问题

for (int i = pos1; i >= 0; i--)
{
    outputData[pos2] = inputData[pos1];
    pos2 ++;

    cout << outputData[pos1] << " ";
}

因为您总是尝试打印outputData[pos1],但pos1永远不会在您的循环中更改。因此,您始终输出相同的字符。类似地,您总是将inputData的相同字符复制到outputData数组,因此当循环退出时,outputData将在不同的索引处包含相同的字符。

您可能会更好运行以下循环,至少复制并打印正确的字符

pos2 = 0;
for (int i = pos1-1; i >= 0; i--)
{
    outputData[pos2] = inputData[i];
    cout << outputData[pos2] << " ";
    pos2++;

}

您的代码可能还有其他问题,因为您未在问题中向我们展示pos1pos2的值已初始化的内容。

答案 1 :(得分:0)

在这里循环遍历数组时:

for (int i = pos1; i >= 0; i--)
{
    outputData[pos2] = inputData[pos1];
    pos2 ++;

    cout << outputData[pos1] << " ";
}

您始终在输入数据中访问相同的位置:pos1。如果您将此循环更改为此

for (int i = pos1 - 1; i >= 0; i--)
{
    outputData[pos2] = inputData[i];
    pos2 ++;

    cout << outputData[pos2 - 1] << " ";
}

它会像你想要的那样倒计时。那是因为我在循环的每次迭代中递减,而pos1则不是。它可能正在读取所有0,因为inputData[pos1]为0。