• ベストアンサー

配列での終了条件

教えて頂きたいことは、 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

  • 配列を使った入力

    配列を使った入力 下記プログラムで sample9.4.cpp: function 内の `int main()': sample9.4.cpp:18: no match for `std::istream& << int&' operator というエラーがでてしまいます。 たぶん test[b][a] = c; という部分が悪いと思うのですが、 なぜ悪いのか分かりません。 配列の使い方が間違っているのでしょうか。 どなたか教えて頂けると嬉しいです。 ーー #include <iostream> using namespace std; int main() { int a,b,c,sub,num; cout << "Please input the number of subjects\n"; cin >> sub; cout << "Please input the number of people\n"; cin >> num; int test[b][a]; for(int b=0; b<sub; b++){ for(int a=0; a<num; a++){ cout << "Please input the point of the " << a+1 << "th people of the " << b+1 << "th subject\n"; cin << c; test[b][a] = c; } } for(b=0; b<sub; b++){ for(int a=0; a<num; a++){ cout << "The point of the " << a+1 << "th people of the " << b+1 << "th subject is " << test[a][b] << '\n'; } } return 0; }

  • 配列のプログラムですが

    #include <iostream> using namespace std; int main() { int a[100],b=-9999; int i=0,j; do { cout << "整数値を入力してください\n"; cin >> a[i]; b += a[i]; i++; }while( a[i-1] != 9999); cout << b << '\n'; for(j=0;j<i-1;j=j+1) cout << a[j] * 3 << '\n'; return 0; } このプログラムってどんな計算をしてるんですか?誰か分かる人いますか 整数値を入れてくださいって出るだけなんですが

  • c++ 配列で最大要素数を100にしたプログラムのDisplay()は?

    最大要素数が100の配列で社員リストを作っているのですが、入力の途中(たとえば5人分を入力した後で)それまでのリストを表示したいとします。そのときは、for(int i=0; i<MAX; i++)とするとMAX=100となっている為アウトプットがおかしくなってしまいます。こういう場合はMAXの代わりをどうしたらよいのでしょうか?宜しくお願いします。

  • インライン関数の使い道と理屈

    #include <iostream> using namespace std; //max関数の定義 inline int max(int x, int y){if(x>y) return x; else return y;} int main(){ int num1, num2, ans; cout << "1番目の整数を入力して下さい。\n"; cin >> num1; cout <<"2番目の整数を入力して下さい。\n"; cin >> num2; ans = max(num1, num2); cout << "最大値は" << ans << "です。\n"; return 0; } インライン関数の処理は呼び出し部分に埋め込まれるので、プログラムの処理速度が 向上することがありますとあるんですが、 どのような時にインライン関数は使用するのでしょうか? 理由もしくみもご教示お願いします。

  • 配列の和を求めるプログラム

    キーから入力したデータを配列に入力した後、その和を求めるプログラムを作成したいのですが、プログラミング初心者の私にはさっぱりわかりません。 和を求めたいのに平均値が出てきてしまいます。 どこが間違っているのか教えてください。 #include <stdio.h> float data[5]; float total(int max); void main(void) { int cnt = 0; float d; printf("please input a data: "); scanf("%f", &d); while((cnt < 5) && (d > 0.0)) { data[cnt] = d; cnt++; printf("please input a data: "); scanf("%f", &d); } printf("total data: %5.2f\n", total(cnt)); } float total(int max) { int i; float total = 0.0; for(i = 0; i < max; i++) { total += data[i]; } return total / max; }

  • C++:cinが上手く使えない

     そもそもcinについてあまり詳しい事は知らないのですが よろしくおねがいします。  cinを使って整数を取りこもうとする時、数字以外が 入ってしまうとおかしな動作をします。  例えば「10未満の整数値を取りこむまで続くループ」で 入力部分を作ろうとした時に、 while(1){  cout << "入力してください" << endl;  cin >> int_a;  if(int_a < 10) break; } 大体 以上の様に書くと、入力する時にアルファベットが 入ってしまうと 入力して下さい 入力して下さい …(エンドレス)… 入力して下さい となってしまいます。cinをあきらめてscanfにしてみると 今度は実行時エラーがでてしまいます。  整数を入力する事が出来て、なおかつアルファベットが 入力されても' 'で囲った値が入るようにするには どのようにすればよいでしょうか?

  • 5つの要素を持つ配列から最高点を出力する

    1,5つの要素を持つ配列を受け取り、その最大値を返すint main(int x[])関数を定義してください。max()関数を使い、キーボードから学生の数とテストの点数を入力させ、最高点を出力うするコードを記述してください。 テストの点数を入力してください。 50 49 35 68 75 最高点は75点です、 みたいな感じの例題を作るまとめの練習ですが、ちょっと頭がこんがらがってしまいました。 とりあえず私が、途中まで記述したソースです。 #include<iostream> using namespace std; int max(int x[]); int main() { int tensu[5]; for (int i = 0; 0 < 5; i++) { cout << "テストの点数を入力してください。\n"; cin >> tensu[i]; } return 0; } int max(int x[]) { } 関数を使ってそれでif判定だとは思うのですが、関数を使ってifを使う方法が解りません。 ご教示よろしくお願いします。

  • C言語:配列の最大値

    こんにちは。 プログラミングの講義の課題で、 1.100未満の整数20個からなる配列を作成する 2.for文を使って20個の整数の中で最大値を求める 3.その結果を出力する というC言語の課題が出されました。完成はしたのですが、何度実行してもビルドエラーが発生して正常に作動しません。どうすれば正常に作動しますか? #include <stdio.h> int main(void){ int i; int max=0; int num[20] = {4,83,71,90,7,33,62,51,98,21,18,20,75,49,69,14,80,22,8,50}; for( i=0 ; i < 20 ; i++ ) { if (num[i] > max) max = num[i]; } printf("%d,",max); return (0); }

  • 最大値(c++)

    3つの数の最大値をArrayを使って求めるProgramを書いてます。何とかそれっぽくできたのですが、実行すると、一番初めに入れた数が最大値であると、表示されてしまいます。 なにが問題なのでしょうか? #include<iostream.h> int max(int n[], int size){ int max= n[0]; for (int i=1; i>size; i++) if(n[i]>max) max= n[i]; return max; } int main(){ int a,b,c; cout<<" 3つの数の最大値を求めます。順に3つの数字をいれてください。"<<endl; cin>>a>>b>>c; int d[]={ a,b,c }; cout<<"max :"<<max(d,sizeof d/ sizeof d[0])<<endl; return 0; }

  • 配列やif文について

    課題がでました。 最大で30個の整数を入力し、それを大きい順に並び替えるプログラムを 1次元配列と繰り返し・if文を使い作成しなさい。 例は input 12 8 90 the large order 90 12 8 という課題がでました。 ここの方なら簡単とは思いますが、よろしくお願いいたします。 自分で作ったプログラムは #include <stdio.h> main() { int a[30]; int n; int imax; int work; int max ; int i,k; printf("seisuunokosuu(<=30)="); scanf("%d",&n); for(i=0;i<n;i++){ printf("input.%2d=",i+1); scanf("%d",&a[i]);} for(i=0;i<n;i++){ imax = i; max = a[imax]; for(k=i+1;k<=n;k++){ if(a[k] > max){ imax =k; max = a[imax]; } } work = a[i]; a[i] = a[imax]; a[imax] = work; } for(i=0;i<n;i++){ printf("%d\n",a[i]); } return(0); } ですが、繰り返し・if文(一度)をつかっていません。 アドバイスの方よろしくおねがいいたします。