多分こんな関数が作りたいんじゃないかな……と察して、テストコードを作ってみる(・ω・)
#module
#defcfunc limitloop_sado int p1,int min,int max,local d,local in
d=abs(max-min)
if p1<min :in=max-abs(p1-min)\d
if min<=p1 & p1<=max :in=p1
if max<p1 :in=min+abs(p1-max)\d
return in
#defcfunc limitloop_koma int p1,int min,int max,local d
#ifdef _debug
if ( min>max ) : dialog "min>maxなる値が渡されました@limitloop_koma" : end
#endif
if ( min==max ) : return min
if ( ( min<=p1 ) && ( p1<=max ) ) : return p1
if ( p1<min ) : return max-(min-p1-1)\(max-min+1)
if ( p1>max ) : return min+(p1-max-1)\(max-min+1)
return d
#global
val = 2 : min = 1 : max = 5 //2,3,4,5,1,2…と、2,1,5,4,3,2…を表示させたい(のか?)
pos 0,10 : mes "sado"
pos 0,70 : mes "koma"
repeat 20
pos 9*cnt+50,10 : mes ""+limitloop_sado(val+cnt,min,max)
pos 9*cnt+50,30 : mes ""+limitloop_sado(val-cnt,min,max)
pos 9*cnt+50,70 : mes ""+limitloop_koma(val+cnt,min,max)
pos 9*cnt+50,90 : mes ""+limitloop_koma(val-cnt,min,max)
loop
この実行結果と、
>>何とかlimitloop関数を作ることができました
という文章を照らし合わせると、こっち考えは外れているようだ……あれ?
一体limitloopとはなんなのか。定義を教えてください(・ω・)
>>実数の場合も、全く同じ式でいいのでしょうか??
>>limitloopfみたいな
同じ式で出来るかどうか、試せばいいと思いますヨ。