-1

コードに問題があります。このコードの意図は、隣人を数え、オプションに応じて配列を変更することです。テストを繰り返した後、リクエスト : nbVoisins = nb_voisins_M(tab, i, j, n, m);(who couting neightbors) とその直後の行if(nbVoisins = b)の値が同じではないことがわかりました。そして、私はその理由を理解していません...

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

1 に答える 1

4

ニッケルがあれば…

if(nbVoisins == b)

なぜなら、

 if(nbVoisins = b)

bの値をtoに割り当て、 が 0 に等しいnbVoisinsかどうかをチェックし、比較せず、等しいかどうかを確認します。nbVoisins bnbVoisins

まともなコンパイラはこれに対して警告を発するはずなので、警告に注意してください - それはリストされるべきです。

于 2013-02-07T19:32:17.557 に答える