2013-03-17 72 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来防止负值。