2013-02-07 4 views
-1

내 코드에 문제가 있습니다. 이 코드의 의도는 이웃을 세고 옵션에 따라 배열을 수정하는 것입니다. 테스트를 여러 번 수행 한 후 요청이 nbVoisins = nb_voisins_M(tab, i, j, n, m); (who couting neightbors)이고 if(nbVoisins = b) 직후 줄이 동일한 값이 아닌 것을 관찰했습니다. 그리고 나는 ... 이유를 이해하지 않습니다C - 다른 값을 가진 변수

내가 니켈이 있다면
int i, j, k, nbVoisins; int b = 0;int s = 0; 

for(i=0; i<n; i++) 
{ 
    for(j=0; j<m; j++) 
    { 
    nbVoisins = nb_voisins_M(tab, i, j, n, m); 
     if(tab[i][j]==1) 
     { 
      for(k=0; k<9; k++) 
      { 
       if(S[k]==1) 
       { 
        s = k+1; 
        //printf("tab[%d][%d] : nbVoisins = %d et s = %d \n",i,j,nbVoisins,s); 
        if(nbVoisins == s) 
        { 
         tab2[i][j]=1; 
         printf("= %d",tab2[i][j]); 
        } 
        else 
        { 
         tab2[i][j]=0; 
        } 
       } 
      } 
     } 
     else 
     { 
      for(k=0; k<9; k++) 
      { 
       if(B[k]==1) 
       { 
        b = k+1; 
       } 
       if(nbVoisins == b) 
       { 
        tab2[i][j]=1; 
       } 
      } 
     } 
    } 
} 

답변

4

...

if(nbVoisins == b) 

, 때문에

if(nbVoisins = b) 

nbVoisinsb의 값을 할당하며, nbVoisins이 0인지 확인합니다. bnbVoisins을 비교합니다.

괜찮은 컴파일러는 raise a warning이어야합니다. 따라서 경고에주의하십시오 - 나열되어 있어야합니다.

+0

아, 그렇습니다. 나는 미안하다는 것을 보지 못했습니다 ...하지만 또 다른 문제가 있습니다. nbVoisins == s 일 때, 일반적으로 배열의 제곱은 tab2에서 1의 값을 갖습니다. 그것은 작동하지만 값을 0으로 변경 한 후 ... (내 첫 번째 게시물에서 코드를 변경했습니다) –

관련 문제