0

私はこのコードを持っています

int x = 0
int MAX = 21;
int MIN = 18;
char *arr[40];
do{
  char* current = cycle(x,arr)
  x++;
}while(x<10000000)

私のcycle()は現在、配列全体を循環しています

unsigned char *cycle(int counter, unsigned char *packets[40]){
int tmp = counter % 40;
return packets[tmp];
 }

しかし、[MIN、MAX]の範囲だけで配列を循環させたいです。したがって、while ループの戻り値は次のとおりです: arr[18]、arr[19]、arr[20]、arr[21]、arr[18]、arr[19]...

これを実装する方法はありますか?グローバル変数を使用したソリューションは必要ありません。

手伝ってくれてありがとう!

4

2 に答える 2

2

次のようなものを試してください。

sometype cycle_range(int counter, sometype array[], unsigned min, unsigned max) {

    sometype* first = array+min;
    unsigned length = max-min+1;

    return first[counter % length];
}

これはソリューションと同じように機能しますが、min要素をさらに開始し、の代わりに要素arrayをループします。max-min+140

(あなたの場合sometypeですunsigned char*が、必要に応じてここで別のタイプに置き換えることができます)

于 2012-12-03T10:25:01.397 に答える
0
unsigned char *cycle(int counter,int min, int max, unsigned char *packets[40]){
    int tmp = (counter % (max - min + 1)) + min;
    return packets[tmp];
}
于 2012-12-03T11:00:52.040 に答える