2012-09-13 5 views
0

다차원 배열을 사용하여 데이터를 저장하려고하지만 배열의 일부 인덱스가 올바르게 작동하지 않는 것 같습니다. 대부분의 요소에 대해 올바른 데이터를 얻지 만, 읽은 값이 0이 아니더라도 일부는 모두 0을 읽습니다.0을 잘못 읽는 다차원 배열의 일부 요소

-3.238467 -3.237679 -0.487128 -3.237634 -3.238513 -3.239868 
-3.239361 -3.238660 0.000000 -3.238610 -3.435949 -3.437109 
-3.622402 -3.621796 0.000000 -3.621911 -3.436662 -3.437587 
-3.237072 -3.236771 0.000000 -3.237329 -3.237926 -3.238605 
-3.227221 -3.227291 0.000000 -3.228477 -3.229173 -3.229775 
-3.204790 -3.205429 0.000000 -3.207087 -3.207956 -3.208255 
-2.618961 -2.621088 -2.622552 -2.623831 -2.624973 -2.625057 

이 같은 값을 확인하더라도 : 배열이 같은보고 뭔가 끝

for(j=0; j<(num_cell_y); j++) { 
    for(i=0; i<(num_cell_x); i++) { 
     ... 
     ... 
     ... 
     grid[i][j] = u_avg; 
     printf("%f\n", u_avg); 
     printf("%f\n", grid[i][j]); 
    } 
} 

을 나는 두 개의 서로 다른 값을 인쇄 얻을 :

-3.237675 
0.000000 

다른 사람을 가지고 이 일이 그들에게 일어 났는가, 아니면 내가 놓쳤을지도 모르는 것을 알고 있는가? 그것은 당신이 순서대로 배열을 채울 필요가 보인다

+0

그리드 배열 차원이 루프와 일치하지 않는, 또한 당신은 당신의 코드 – pyCthon

+0

에 배열에서 아무것도를 합산하지 배열 선언이 잘못되었을 가능성이 있습니다. 문제를 나타내는 완전한 코드를 게시해야합니다 (원하는 경우 독자가 컴파일 할 수도 있음). 선언문을 보지 않고서는 우리가 할 수있는 모든 일은 어둠 속에서 한 발을 쏘는 것입니다. – Gilles

답변

5

- 주문에 무슨 일이 일어나고 있는지 순서에 실수가이

grid[j][i] = u_avg; 

을해야이

grid[j][i] = u_avg; // Note the indexes being reversed. 
+0

전체 코드를 통해 일관성이있는 한 왜 내가 처음부터 끝까지 반복해야 하는가? 그것은 i와 j가 특정 반복에 대해서만 신경을 쓰고 이전 반복에 의존하지 않으므로 원하는 임의의 순서로 수행 될 수 있습니다. – tjmartian

+0

나에게 이상한 점은 이전 라인이 두 값을 같게 설정한다고해도 두 개의 서로 다른 값을 출력한다는 것입니다. 마치 그 라인이나 그 무엇을 무시한 것 같습니다. – tjmartian

1

grid[i][j] = u_avg;

j는 바깥 쪽 루프에 있으므로 일단 i<(num_cell_x);까지 고정되어 있고 배열은 다차원이고 코드에 따라 바깥 쪽 arra를 변경합니다 당신이 J를 할 경우이 그렇게 수정되지

i j 
a[0][0]=> 
a[1][0]=> 
a[3][0]=> 

같은 y를보다 내가

j 1 
a[0][2]=>array(1=>'',2=>'',...) 
a[1][0]=> 
a[3][0]=>