我试图构建一个微小的(或者可能不是那么小)的公式,它将包含一组min和max之间的数字,但也会循环这些数字,这样如果它们超出范围就不会被剪裁.到目前为止,这就是我所拥有的.
min1 = 10
max1 = 90
val1 = 92
//will make 11, which is what i want since it loops
formula: min(max(min1,min(val1,max1)),mod(val1,max1)+min1)
Run Code Online (Sandbox Code Playgroud)
但是,我希望它也可以循环另一个方向,这样如果val1为5,即min1之外的-5,它将变为86.
我遇到的另一个问题是
max1 % max1 != max1
Run Code Online (Sandbox Code Playgroud)
因为我想要它,因为最大值是范围的一部分
试图说清楚,这里有一些基于循环范围的所需输出的例子
min1 = 10
max1 = 90
----------------------------------------------
val1 = 30 //within range: stays as 30
val1 = 90 //within range: stays as 90
val1 = -6 //below range: loops to becomes 75
val1 = 98 //above range: loops to becomes 17
val1 = 91 //above range: loops to becomes 10
Run Code Online (Sandbox Code Playgroud)
我不想使用一系列if/else语句,但如果绝对需要,那就没问题了.甚至可能吗?
int loop(int val, int min, int max)
{
int p = max-min+1;
int mod = (val-min)%p;
if(mod<0)
mod += p;
return min+mod;
}
Run Code Online (Sandbox Code Playgroud)