ページ 1 / 1
0,1,2,3,4とずっと繰り返す時の計算式について
Posted: 2009年2月10日(火) 18:51
by フォンクス
0,1,2,3,4とずっと繰り返す計算をしたいのですが
int i;
for(i=0;i<20;i++){
printf("%d\n",(i&3));
}
とやれば0,1,2,3までの繰り返す計算はできて、
これはデクリメントの時では3,2,1,0となるんですが、
0~4までのインクリメントやデクリメントの計算式がわかりません。
Re:0,1,2,3,4とずっと繰り返す時の計算式について
Posted: 2009年2月10日(火) 18:57
by toyo
2^n - 1 (1, 3, 7, 15 ...)
であれば & で出来ますがそれ以外の場合は % (剰余)を使うのが普通かと思います。
printf("%d\n",(i % 5));
Re:0,1,2,3,4とずっと繰り返す時の計算式について
Posted: 2009年2月10日(火) 18:58
by non
ずっと繰り返すと書いてありますが、このプログラムだと20回で終わっちゃいますよ。
0,1,2,3なら
int i=0;
while(1){
printf("%d\n",i++);
if(i>3)
i=0;
}
Re:0,1,2,3,4とずっと繰り返す時の計算式について
Posted: 2009年2月10日(火) 19:05
by たか
#include <stdio.h>
#define LOOP_MAX 20
int main(void){
int i, j;
j = 0;
for(i = 0; i < LOOP_MAX; i++, j++){
if(j > 4)
j = 0;
printf("%d\n", j);
}
return 0;
}
こんな感じでどうでしょう?
LOOP_MAXの値を変更するとループする回数を変更できます。
toyoさんの方法が一番いいと思いますが。
Re:0,1,2,3,4とずっと繰り返す時の計算式について
Posted: 2009年2月10日(火) 19:07
by フォンクス
あまりを出せばいいのですか・・・
ありがとうございました。
Re:0,1,2,3,4とずっと繰り返す時の計算式について
Posted: 2009年2月10日(火) 19:15
by Libra
元の値を変えず、表示だけ変えるなら、たかさんのソースの
printf("%d\n", j);
を
printf("%d\n", 4-j);
に変えれば「4,3,2,1,0,4,3・・・」になります
値を変えるなら、
j = 4 - i % 5 ;
などでしょうか。