for文のトコとかフラグを使う辺りが醜いのは認めますが…だめっすかね。>522

●>521のメリット
・ネストが無駄に深くならない。
・通常のfor文同様、ループ処理の肝となる処理が1行に集約されてる。

・カウンタの更新タイミングが明確。
 例えばカウンタを直接操作する方法でやってしまいがちな、↓のようなミスを防げる。
   if( i == x ) i = 0; //カウンタリセット(処理は継続) ← この行を追加
   ...
   ++data[i]; // data[x] にincrementされない。

・フローの制御方法が(比較的)単純明快。↓
  for( int i=0,step=1; i < n; i+=step,step=1 ) {
   if( ... ) step = 0; // もう1回
   if( ... ) step = -i; // 最初から
   if( ... ) step = -n; // n個戻る
   if( ... ) step += n; // n個スキップ
  }