i = 2,6,8,12,16,20,22,26,34などの特定のi値を使用して、cでFORループを作成しようとしています..インクリメントを指定する方法がわかりません等しくありません。このコードは私には適していません。
for (i=2,i<=30,i++) {
}
多分 i で指定された値の配列を使用して、その配列を参照して for ループを実行しますか?
何か助けはありますか?
i = 2,6,8,12,16,20,22,26,34などの特定のi値を使用して、cでFORループを作成しようとしています..インクリメントを指定する方法がわかりません等しくありません。このコードは私には適していません。
for (i=2,i<=30,i++) {
}
多分 i で指定された値の配列を使用して、その配列を参照して for ループを実行しますか?
何か助けはありますか?
-loopfor
構文を修正する必要があります。
最初のオプションは、カスタム関数を使用することです。
for (i=2; i <= 30; i = foo(i)) { ... }
ここfoo
で、 の現在の値を取り、i
次の値を返す関数です。自分自身の適切な定義を考え出す必要がありfoo
ます。
もう 1 つの方法は、これらすべての値を配列に入れ、その配列をインデックスとして使用することです。
int indices[ MAX_INDICES ] = { 2, 6, ... };
for (size_t j = 0; j < MAX_INDICES; ++j) {
/* instead of using 'j' use indices[ j ] now on */
}
追加したい量は常に同じではないようです。そのため、値を配列に入れて、インデックスを使用してループすることをお勧めします。
疑似コード:
int vals[10];
// fill the values
vals[0] = 2;
vals[1] = 6;
vals[2] = 8;
...
for(int i = 0; i < 10; ++i)
{
// work
}
正しい、インデックスを配列に入れたい:
static const int indices[] = { 2,6,8,12,16,20,22,26,34 };
for (int i = 0; i != sizeof(indices) / sizeof(indices[0]); ++i) {
const int j = indices[i];
...
}
i の値にパターンはありますか? そうでない場合、および必要な可能な値の数が十分に少ない場合は、配列を作成し、配列全体を反復処理する必要があります。次のようになります。
int myValue[9] = {2,6,8,12,16,20,22,26,34};
int i;
for(i=0; i < 9; i++)
{
printf("myValue[%d] = %d\n", i, myValue[i]);
}
2ステップで、このようにできます。for (i=2,i<=30,i+=2) {
}
正確な制約は何ですか?ほとんどの場合、4 ずつ増加するようですが、変動があります。
それを考えると、必要な値を配列に入れてそのように使用するか、代わりにこれらの値を生成してからそのようにアクセスできる関数を定義するのが最善のアプローチのようです(値の配列をインデックス化するのではなく) )。
また、-loop 内の部分はnotfor
で区切られていることに注意してください。;
,