• ベストアンサー

配列での終了条件

教えて頂きたいことは、 MAX=5として整数を入力して配列を作りたいのですが、 入力が5個以下でも0をインプットすると入力が終わる ようにするにはどうしたらいいのでしょうか? int list[MAX]; cout << "Please insert integers (0 to end)"; for (int i=0, i < MAX, i++) cin >> list[i]; これでは、5個の整数の入力が終わるまでループして しまいます・・・

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

  • ベストアンサー
  • MovingWalk
  • ベストアンサー率43% (2233/5098)
回答No.2

>入力が5個以下でも0をインプットすると入力が終わるように list[i]==0 の時にforループから抜ければ(breakすれば)いいです。 for (int i=0, i < MAX, i++) cin >> list[i];   ↓ for (int i=0; i < MAX; i++) { cin >> list[i]; if(list[i] == 0) break; }

october31
質問者

お礼

どうもありがとうございました。助かりました。 上の回答してくださった方にもお聞きしたのですが 、先ほど入力された配列の要素を画面で Enter integers(0 to end): 2 5 34 66 0 のように横一列にアウトプットするにはどうしたらいいのでしょうか?私のプログラムでは下に入力された数字が出てしまいます。↓ Ente integers(0 to end)2 5 34 66 0

その他の回答 (2)

  • selenity
  • ベストアンサー率41% (324/772)
回答No.3

失礼しました。 > 0をインプットすると入力が終わる を見落としていましたね。 お詫び代わりに、ちょっと変わった方法を、、、  int i = 0;  do{   cin >> list[i];   i++;  } while( i < MAX && list[i-1] != 0 ); for文を使わなくても良いのであれば、 これならif文なんか不要です。

october31
質問者

お礼

すばやい回答ありがとうございます。助かりました。もうひとつ聞きたいことがあったんですが、先ほど入力された配列の要素を画面で Enter integers(0 to end): 2 5 34 66 0 のように横一列にアウトプットするにはどうしたらいいのでしょうか?私のプログラムでは下に入力された数字が出てしまいます。↓ Ente integers(0 to end)2 5 34 66 0

  • selenity
  • ベストアンサー率41% (324/772)
回答No.1

まぁ、単なるスペルミスだと思いますが、カンマではなくセミコロンですね。 for (int i=0, i < MAX, i++) ではなく for (int i=0; i < MAX; i++) が正解です。 あわてちゃいけません。まずは落ち着きましょう。

関連するQ&A