2016-11-13 39 views
-1

我的問題如下。 我想滾動一個1維數組,只檢查第4,5,8,9次(又名:0 + 4 * n和3 + 4 * n)的值。 檢查此字段的值是否爲0,如果是,則將其設爲1並停止。 如果它不是0,則轉到下一個值(0 + 4 * n或3 + 4 * n)並將其設爲1並停止。 等等.. 我到目前爲止所做的是以下幾點。問題是,它更新多個值一次..滾動1d陣列並更改特定值

 { 
     for (i=0; i<nr; i++) 
     { for (n=0; n<((nr)/4); n++) 
      if (i==(0+(n*4))) 
      { 
       if (array[i]==0) 
       { 
        array[i]=1; 
        break; 
       } 
      } 
      else if ((i==(3+(n*4)))) 
      { 
       if (array[i]==0) 
       { 
        array[i]=1; 
        break; 
       } 
      } 
     } 
     } 

我在做什麼錯了,它不會停止,而是一次更新所有值?

+0

在第二個for循環您重新初始化「n」併爲「i」增加一個。這是故意的嗎? –

+0

這太明顯了,但在電腦前幾個小時我就把它弄糟了!可能是這個錯!謝謝.. – baskon1

+0

那麼它解決了嗎? –

回答

0

你的解釋是不正確的:第4,第5,第8,第9等對應4*n4*n+1,不4*n+3

下面是修改和簡化代碼:

for (i = 0; i < nr; i++) { 
     if (i % 4 <= 1) { 
      if (array[i] == 0) { 
       array[i] = 1; 
       break; 
      } 
     } 
    }