2017-05-07 9 views
0

長さがsizeの配列とその配列のインデックスがnの場合、どのようにインデックスをラップすると、常にsize-1の範囲内になるのですか?正の数値の場合は、単にn % sizeですが、nが負の場合、後ろに折り返す方法はありますか?私が作ってみた何配列のサイズに負のインデックスをラップする

n <= sizeため

int wrap(int size, int n) { 
    if (n >= 0) 
     return n % size; 
    else 
     return abs(size + n) % size; 
} 

しかし、これだけで動作します。どのようにそれをnのために働かせるには?

予想される出力:

wrap(4, -1) == 3 
wrap(4, -2) == 2 
wrap(4, -3) == 1 
wrap(4, -4) == 0 
wrap(4, -5) == 3 
wrap(4, -6) == 2 
wrap(4, -7) == 1 
wrap(5, -8) == 0 

答えて

1

あなたは床の部門とのモジュロ演算子が欲しいです。

int mod_floor(int a, int n) { 
    return ((a % n) + n) % n; 
} 
関連する問題