ループネストの簡略化

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

ループネストの簡略化

#1

投稿記事 by ウーパールーパー » 3年前

ループのネスト構造を簡略化する方法が分からなかったためトピックを立てさせていただきました。
例えば、

コード:

int i, j, k;
for( i=0 ; i<100 ; i++ )
{
    for( j=i ; j<100 ; j++ )
    {
        for( k=l ; k<100 ; k++ )
        {
            printf( "%d\n", i*j*k );
        }
    }
}
といったループがあったとします。
上の例ですと3重程度ですから直接書いても大した問題ではありませんが、
さらに重なると書くのも大変ですし、ミスも増えてきます。
上記のようなプログラムを簡単に表記する方法はないでしょうか?

たいちう
記事: 418
登録日時: 9年前

Re: ループネストの簡略化

#2

投稿記事 by たいちう » 3年前

> 上の例ですと3重程度ですから直接書いても大した問題ではありませんが、
> さらに重なると書くのも大変ですし、ミスも増えてきます。

この程度ならば十分簡潔だと思います。
さらに重なる場合、例えば10段階にネストするような場合でも、
下手な小細工をするよりも簡潔だとは思いますが、
そもそも処理的にどうなのよと思い、アルゴリズムを見直します。

どうしても多重の深いネストが必要な場合は再帰関数を使うでしょう。
実際に何をやりたいのか具体的でないと、これ以上のアドバイスは難しいです。

閉鎖

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