2014-11-29 1 views
0

배열의 내용을 행렬에 넣으 려합니다. 행렬이 정적이라면 모든 것이 잘 작동하지만 동적으로 할당하려고하면 읽기가 잘되지 않습니다.동적으로 할당 된 행렬에서 올바르지 않은 읽기가 발생했습니다.

int main() 
{ 
int a[]={2, 1, 2, 4, 9, 2, 1, 7, 3, 5, 8, 3}; 

int c[3][4]; 

int **b; 
b = (int**) malloc (3*sizeof(int*)); 
for (int i=0; i < 3; i++) 
    b[i] = (int*) calloc (4, sizeof(int)); //o linie 

int k=0, m=0; 
for (int i=0; i<12; i++) 
    { 
     b[k][m]=a[i]; 
     c[k][m]=a[i]; 
     m++; 
     if((i!=0) && (!(i % 4))) {k++; m=1;} 
    } 

for (int i=0; i<3; i++){ 
    cout << endl; 
    for (int j=0; j<4; j++) 
     cout << b[i][j] << " "; 
} 

cout << endl; 

for (int i=0; i<3; i++){ 
    cout << endl; 
    for (int j=0; j<4; j++) 
     cout << c[i][j] << " "; 
} 
return 0; 
} 


    The output: 
    2 1 2 4 
    0 1 2 7 //I have 0, why don't I have 9? 
    0 5 8 3 //I have 0, why don't I have 3? 

    2 1 2 4 
    9 1 2 7 //here is correct 
    3 5 8 3 //here is correct 

내가 잘못했는지 알려주세요.

답변

1

당신은 변경해야합니다 귀하의 경우

if (i % 4 == 3) 
관련 문제