2013-02-07 99 views
-1

我的代碼有問題。此代碼的目的是計算鄰居並根據選項修改數組。 經過多次測試後,我觀察到請求:nbVoisins = nb_voisins_M(tab, i, j, n, m);(who couting neighbours)和剛剛在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) 

將分配的b價值nbVoisins,和那麼它會檢查nbVoisins是否等於0,它不會比較bnbVoisins是否相等。

體面編譯器應該raise a warning爲此,所以要注意警告 - 它應該列出。

+0

啊啊是的,我沒有看到那個抱歉...但還有一個問題。當nbVoisins == s時,通常數組的平方在tab2中值爲1。它的工作原理,但值後更改爲0 ...(我改變了我的第一篇文章中的代碼) –

相關問題