如何将用户输入添加到2D阵列中

时间:2013-03-24 21:46:41

标签: c++ arrays multidimensional-array

我正在尝试获取用户输入,该输入存储在数组(eightBit [])中,然后将其添加到2D数组(板)。用户应该输入8个数字,例如: 字节1:1 字节2:2 等等... 输出应该看起来像:

1 2 3 4
5 6 7 8

然而这是我得到的输出:

8 8 8 8
8 8 8 8

知道为什么它只重复输入的最后一个?我的部分代码如下,任何帮助都将受到赞赏。

cout << "Enter a pattern of eight bits:" << endl;
            for(i = 0; i < 8; i++){
                cout << "Byte " << i+1 << ": ";
                cin >> eightBit[i];
            }

int board[2][4];

            for(i = 0; i<8; i++){
                for(int j=0; j<2; j++){
                for(int k=0; k<4; k++) {
                    board[j][k] = eightBit[i];

                }
            }

            for(int j=0; j<2; j++)
            {
                for(int k=0; k<4; k++) 
                {
                    cout << board[j][k]  << "  ";
                }
    cout << endl;
}

2 个答案:

答案 0 :(得分:2)

这是因为您的外部循环i基本上覆盖了2D数组中的每个元素。

解决方案是完全删除外部循环,如下所示:

int i = 0;
    for(int j=0; j<2; j++) {
        for(int k=0; k<4; k++) {
            board[j][k] = eightBit[i++];
        }
    }

您的代码段中也包含括号不匹配

答案 1 :(得分:0)

这很自然。在第二次,当我最后8,然后董事会充满了当前的i(i = 8)。 试试这个,下次要更加小心你的代码:)。

#include <iostream>

using namespace std;
int eightBit[2][4];

int main()
{
    cout << "Enter a pattern of eight bits:" << endl;

        for(int i = 0; i <2; i++){
            for (int j=0 ; j<4 ; ++j)  {
                cout << "Byte " << (j+1)+4*i << ": ";    //4 = # of columns,i=row,j=column.
                cin >> eightBit[i][j];
            }
        }


    int board[2][4];


    for(int i = 0; i <2; i++){
        for (int j=0 ; j<4 ; ++j)  {
            board[i][j] = eightBit[i][j];

        }
    }
    for(int i = 0; i <2; i++){
        for (int j=0 ; j<4 ; ++j)  {

            cout << board[i][j]  << "  ";
        }
        cout << endl;
   }

}