- ベストアンサー
配列での終了条件
教えて頂きたいことは、 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個の整数の入力が終わるまでループして しまいます・・・
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>入力が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; }
その他の回答 (2)
- selenity
- ベストアンサー率41% (324/772)
失礼しました。 > 0をインプットすると入力が終わる を見落としていましたね。 お詫び代わりに、ちょっと変わった方法を、、、 int i = 0; do{ cin >> list[i]; i++; } while( i < MAX && list[i-1] != 0 ); for文を使わなくても良いのであれば、 これならif文なんか不要です。
お礼
すばやい回答ありがとうございます。助かりました。もうひとつ聞きたいことがあったんですが、先ほど入力された配列の要素を画面で Enter integers(0 to end): 2 5 34 66 0 のように横一列にアウトプットするにはどうしたらいいのでしょうか?私のプログラムでは下に入力された数字が出てしまいます。↓ Ente integers(0 to end)2 5 34 66 0
- selenity
- ベストアンサー率41% (324/772)
まぁ、単なるスペルミスだと思いますが、カンマではなくセミコロンですね。 for (int i=0, i < MAX, i++) ではなく for (int i=0; i < MAX; i++) が正解です。 あわてちゃいけません。まずは落ち着きましょう。
お礼
どうもありがとうございました。助かりました。 上の回答してくださった方にもお聞きしたのですが 、先ほど入力された配列の要素を画面で Enter integers(0 to end): 2 5 34 66 0 のように横一列にアウトプットするにはどうしたらいいのでしょうか?私のプログラムでは下に入力された数字が出てしまいます。↓ Ente integers(0 to end)2 5 34 66 0