2013-03-17 75 views
3

我有一個數組,我想向後滾動它的位置。向後滾動圓形陣列

我有一個布爾數組,我需要計算從給定單元格向前和向後有多少個真值。

我知道如果N是數組中元素的數量,我可以繼續做i =(i + 1)%N。 但是如果我需要以相反的方式滾動它呢?

預先感謝您。

+1

減1而不是加1 ... – beny23 2013-03-17 15:51:18

+1

如果i = 0,則(i-1)%N結果爲-1 – 2013-03-17 15:53:08

回答

1

這應做到:

i--; 
if (i == -1) 
    i = N-1; 

或在1線:

i = ((i-1 == -1) ? N-1 : i-1); 

但上述噪音的變化可能是更好的。 一個相關的if語句版本:

if (i == 0) 
    i = N-1; 
else 
    i--; 

一個相關的1行版本:

i = (i == 0 ? N-1 : i-1) 
1

如何i = (i == 0 ? N : i) - 1

6

我通常使用i = (i - 1 + N) % N來防止負值。