ページ 11

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 ;

などでしょうか。