• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:わかりません!!)

質問:関数についての問題

このQ&Aのポイント
  • 関数についての質問です。問題のコードでは、無限ループが発生してしまいます。対処法を教えてください。
  • コード内に問題があり、無限ループが発生します。どのように修正すればいいですか?
  • 関数に関する質問です。問題のコードを実行すると無限ループが発生してしまいます。修正方法を教えてください。

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

  • ベストアンサー
  • nagare
  • ベストアンサー率33% (280/831)
回答No.4

予測1の場合 for ( i = 0 ; i < num ; i ++ ) { if ( tensu{a][i] >= GOUKAKU) { succs[snum++] = i; } for ( i = 0 ; i < snum ; i ++ )←iを違う変数にする { printf("%2d番 (%3d点)¥n” , succs[i] + i , tensu[a][succs[i]]); } } 予測2の場合 for ( i = 0 ; i < num ; i ++ ) { if ( tensu{a][i] >= GOUKAKU) { succs[snum++] = i; for ( i = 0 ; i < snum ; i ++ )←iを違う変数にする { printf("%2d番 (%3d点)¥n” , succs[i] + i , tensu[a][succs[i]]); } } }

bbh
質問者

お礼

わかりにくい質問に回答していただきありがとうございました。回答していただいた方法で直りました。 ありがとうございました。

その他の回答 (3)

  • ngsvx
  • ベストアンサー率49% (157/315)
回答No.3

質問するなら、ソースは正確に書きましょうね。 1. tensu{a][i] 2.for ( i = 0 ; i < snum ; i ++ ); 3.printf("%2d番 (%3d点)¥n” 1,3は明らかにコンパイルエラーになります。 2も対応する括弧の数が合わなくなりエラーになりそうです。 もう一度、正確なソースを示してください。 それと、ループが複数ありますが、どのループで無限ループになっているのかも示してください。 あちこちに、表示用関数をしこんでおけばわかることです。 その結果、「示したソース以外の場所で無限ループしてた」ということもありますから。

noname#30871
noname#30871
回答No.2

 すみません、寝ぼけて大間違いを書いてしまいました。No.1は忘れてください。

noname#30871
noname#30871
回答No.1

for ( i = 0 ; i < snum ; i ++ );  このfor文の意図がよくわかりませんが、「i<snum」が続く限り無限にループするのはおわかりですね。つまり、snumがゼロのときです。  その前でsnumに値を代入しているのは、 if ( tensu{a][i] >= GOUKAKU) succs[snum++] = i; です。(tensu[a][i]の間違いですね) このif文条件が成立しない限り、 succs[snum++] = i; は実行されません。つまり、snum++されません。 すなわち、 for ( i = 0 ; i < num ; i ++ ) のループの中で、 if ( tensu[i] >= GOUKAKU) が一度も成立しない場合に無限ループになります。

関連するQ&A