2013-03-24 134 views
-2

我试图获取用户输入,它存储在一个数组(eightBit [])中,然后将其添加到二维数组(板)。用户应该输入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; 
} 
+0

您从'eightBit'复制到'board'的'for'循环周围的'{'和'}对不会相加 - 它们可能对您的问题至关重要。你可以尝试发布可编译代码吗? – 2013-03-24 21:49:34

回答

0

这很自然。在第二个时候,当我获得最后8个,那么董事会充满了当前我(我= 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; 
    } 

} 
+0

linear index = row * numCols + col – Recker 2013-03-24 22:14:55

+0

是的,这样更清晰。 – trmag 2013-03-24 22:18:19

2

那是因为你与i它基本上覆盖在你的二维数组的每一个元素外循环。

一个解决方案是完全丢弃外环,就像这样:

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

你也有你的代码片段支架不匹配