• ベストアンサー

ループのネスト。

基本的なことかもしれませんが、 whileやfor文をネストできるのは 2回までなんですか? なんかずっと入れ子にしていくと うまくいかない気がするんですが。 他の原因でしょーか?

  • era
  • お礼率38% (12/31)
  • Java
  • 回答数2
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • zerosix
  • ベストアンサー率31% (47/149)
回答No.1

>whileやfor文をネストできるのは2回までなんですか? そんなことないでしょう。 >他の原因でしょーか? 多分。 ソースを提示してみるといいかも。

era
質問者

お礼

2回までではないということで、 きちんと整理してみました。 そしたらうまくいきました。 ソースコードはきれいに書こうと反省しました。 ありがとうございました。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

for(int i=1;i<10;i++){ for(int j=1;j<10;j++){ B; } } のBのところで i を無意識に加工していませんか。

era
質問者

お礼

解答ありがとうございました。 はじめっから整理していったら、 大丈夫になりました。 すんません。

関連するQ&A

  • アルゴリズム・ネストループ方式って何?

    プログラムの性能改善の課題が出ているのですが、アルゴリズムとしてネストループ方式、もしくはその延長上のものを用いること、とあります。 図書館でアルゴリズム関係の本を見てみたのですがどこにもネストループに関して説明がなく、大変困っています。 プログラム自体は、ファイルを読み込んで、表示させるだけの簡単なものです。 簡単に抜き出すと、 for (i=0;; i++){ if ((st = read_a(fd_name, &name_buf, i)) <=0) break; for (j = 0;; j++){ if ((st =read_a (fd_home,&home_buf ,j)) <= 0) break; if (!strcmp(name_buf.a , home_buf.b)){ printf("%s =%s (%s)\n", name_buf.a, name_buf.c , home_buf.c); } } if (st <0) break; といったものです。 注意事項として、break文を入れる手法を使わないこととあります。 お願いします。ネストループって何でしょう?教えてください。

  • Java for文 ネストとreturn文

    Java でfor文, ネスト, return文を使って1~100を順番に10回足していく。構文が作成できません。 わかる方。お願いします。

  • ループについて

     アンケート的な質問ですが、forの無限ループと、whileの無限ループが、C言語にはありますよね?  whileの場合は、while(1)と書きますし、問題ないですが、 forの場合は、for(;;)とかきますよね。  forの無限ループって、顔文字の涙にみえないですか? for文の無限ループって、何が悲しかったのでしょうか? 答えられる方、こたえてください。

  • 括弧のネストが多くて深いと・・・

    身の回りには様々なソフトウエアがあって、C言語で作られているものが1番多いと聞きます。InternetExplorerはC言語で作られてるのかな。 さて、C言語には、if(a>0){・・・}とか、while(a>0){・・・}のようなコードがあります。これでIEを作るとなると、、、 {・・・}{{・・・}・・・{・・・}{・・・}{・・・{・・・}{・・・{・・・{{・・・}・・・}}}}{・・・{・・・}}} みたいな感じでしょうか?括弧のネストとか、入れ子って言うんですかね。IEだと、これが100層200層1000層くらいあるのでしょうか? ここまで括弧が多いと、必然的に右括弧と左括弧の数がズレて、エラーになっちゃうでしょう。しかも、階層構造が複雑で、混乱すると思います。経験積めば慣れるのでしょうか?コツとかあるのでしょうか? 私も5層くらいなら経験あると思いますが、この程度に私は限界を感じています。10層が必要になると、逃げ道を探すでしょう。 プログラマーって大変だね。

  • perl:ループのカウンタ変数の値を保持したい。

    While文のループのなかにfor文でループをまわしているスクリプトなのですが、 forの中でカウンタ変数をつくり、ループ回数を計測しております。 またforの中である条件を満たした際に、lastでforを抜け、引き続きWhileのループを継続するという処理をしております。 $i=0; While(○○){ 処理1    for(××){ 処理2 $i++;      if($i >=100){  処理3       last; } } } ここで、一度for文のif文で一度forループを抜け、Whileでループをし、またforループに突入した際に、前回forループでカウントした$iの値を保持したまま、そのつづきから$iのカウンタを動作させたいのですが、$iの値はforループを抜けるとリセットしてしまいます。 このような場合、どうすれば$iの値を保持できますでしょうか。 お詳しい方、宜しくお願い致します。 ※ネストがうまく表現できず、みずらくてスミマセン。

    • ベストアンサー
    • Perl
  • VBA Forネストのしすぎ

    VBA Forネストのしすぎ 漠然とした質問で申し訳ないのですが VBAに限らず他の言語でも For のネストを多用する傾向にあり 4,5重になってしまい管理が煩雑になったり (他人から見て恐らく)分かりにくいソースになってしまいます 例えば、 ある要素のString一致を探して それを相対参照して一致を探しつつ 更に別のBooleanリストから値の一致を探す。。。 と言った具合です こういった複数の検索をスマートにコーディングする方法はあるでしょうか。

  • ネストしたメソッドにおける変数のスコープ

    mainからnestというメソッドを呼び出し数を数えて出力するという単純なプログラムなのですが、返り値が反映されません。変数に代入すると、うまくいくのですが、スコープが原因なのでしょうか?検索しても仕組みが分かりませんでした。 System.out.println("nest: " + nest(0)); static int nest(int i){ i++; System.out.println("i: " + i); if(i<5) { nest(i); } // i = nest(i); // works ? return i; } 出力: i: 1 i: 2 i: 3 i: 4 i: 5 nest: 1 コメントアウトしているif文の中をi = nest(i); にすると、nest:5になります。

    • ベストアンサー
    • Java
  • 無限ループとループ文

    プログラミングにおいて while文、for文、foreach文などループ文は種類がありますが 無限ループに繋がってしまう恐れが高い順などは存在しますか? どのループ文もミスなく慎重に 正確な書き方さえしていれば無限ループは起きないと思いますが もしそのような順が存在するのであれば、わからないので教えて頂きたいです。

  • for文while文の無限ループの違いについて

    for文の無限ループ for(; ;) と、 while文の無限ループ while(1) は、 どのように違うのですか? 処理速度やCPU負荷を考慮して、 どちらを使用するか悩んでいます。 よろしくお願いします。

  • ループを途中で抜けたいのですが。

    無限ループさせているwhileやfor文などで、 何かのキーを押すとループを抜けるように設定したいのですが可能でしょうか? (scanfやcinなどをループの中に組み込まずに。ctrl+Cも無しで。) (あと、フォーム上ではなくコンソール上で。) 多分説明不足なのでもうちょっと詳しく。 たとえば、 while ( i != 1 ){ j += 1; } の様な無限ループを設定したとして、 本来なら if (j > 100 ){ break; } とか、 while文の中に scanf ( "%d" , &i ); 等を入れて終了条件を満たさせるべきですが、 そうではなく、ひたすら無限ループを続けているところにEscキーを押すとループから脱出するようなプログラムを作ってみたいのです。 そういうプログラムは可能でしょうか? どうかご教授下さい。 使用コンパイラ:Visual C++ 2008 Express Edition