0,1,2,3,4とずっと繰り返す時の計算式について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
フォンクス

0,1,2,3,4とずっと繰り返す時の計算式について

#1

投稿記事 by フォンクス » 16年前

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までのインクリメントやデクリメントの計算式がわかりません。

toyo

Re:0,1,2,3,4とずっと繰り返す時の計算式について

#2

投稿記事 by toyo » 16年前

2^n - 1 (1, 3, 7, 15 ...)
であれば & で出来ますがそれ以外の場合は % (剰余)を使うのが普通かと思います。
printf("%d\n",(i % 5));

non

Re:0,1,2,3,4とずっと繰り返す時の計算式について

#3

投稿記事 by non » 16年前

ずっと繰り返すと書いてありますが、このプログラムだと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とずっと繰り返す時の計算式について

#4

投稿記事 by たか » 16年前

#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とずっと繰り返す時の計算式について

#5

投稿記事 by フォンクス » 16年前

あまりを出せばいいのですか・・・

ありがとうございました。

Libra

Re:0,1,2,3,4とずっと繰り返す時の計算式について

#6

投稿記事 by Libra » 16年前

元の値を変えず、表示だけ変えるなら、たかさんのソースの

printf("%d\n", j);



printf("%d\n", 4-j);

に変えれば「4,3,2,1,0,4,3・・・」になります


値を変えるなら、
j = 4 - i % 5 ;

などでしょうか。

閉鎖

“C言語何でも質問掲示板” へ戻る