2013-03-24 3 views
-2

Я пытаюсь получить вход пользователя, который хранится в массиве (eightBit []), а затем добавьте его в 2D-массив (панель). Пользователь должен ввести 8 цифр, для примера: Байт 1: 1 Байт 2: 2 и т.д. ... и вывод должен выглядеть следующим образом:Как добавить пользовательский ввод в 2D-массив

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

Пары '' '' '' '' '' '' '' '' '' '' '' '', где вы копируете с '8Bit' на' board', не складываются - и они могут иметь решающее значение для вашей проблемы. Можете ли вы попытаться опубликовать компилируемый код? –

ответ

0

Это натуральный. Во втором случае, когда i становится последним 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; 
    } 

} 
+0

linear index = row * numCols + col – Recker

+0

Да, это более понятно. – trmag

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++]; 
     } 
    } 

также у вас есть кронштейн несоответствие в вашем фрагменте кода.

Смежные вопросы