オブジェクト配列について(C++) こんにちわ。プログラミング初心者で現在C++を学んでいます。
オブジェクト配列について(C++) こんにちわ。プログラミング初心者で現在C++を学んでいます。 JavaScriptはある程度やったことがあるのですが、できることとできないことが二言語でかなりちがうのでとても困っています。 さて下記の通り計算を実行したいのですが、現在の知識を元にコードを組んでもエラーがでます。 やりたいことととしてはclass内のnum1, num2を複数の任意配列番号で計算したいです。例えば、配列が100個あるとするとそのうちの[55]と[40]を足したい。 もしくは[50]から[56]の平均値を計算したいなどです。 Class Example { Public: Int num; Int num2; }; Void sumAve(array[], index){ //アレイオブジェクトとインデクス番号 // average 7個の任意のnumの平均 Int sum; Int ave For (int i = index; i >index + 7; i++){ ave += Array[i].num; }; // 二つの任意のnumを計算 sum = Array[index].num + Array[index + 2].num; sum /= 7; Cout << sum << endl; Cout << sum2 << endl; }; Int main(){ Int index; Examples array[100]; sumAve(array, index); //アレイオブジェクトとインデクス番号 return 0}; 細かい表記ミスがあるかと思いますが、ご容赦ください。 実際のクラスオブジェクトへの入力はユーザーからのインプットをする予定ですが、そちらのコードは割愛しています(長くなるのを防ぐため)。 いずれにしろ質問の主旨は、複数のarray[i].numを計算することです。 ちなみにオブジェクト同士の計算なので演算子のオーバーロードが必要になりますか? ご不明な点等がありましたらぜひご確認ください。 どうぞご教授頂けますと幸いです。
ベストアンサー
>[50]から[56]の平均値を計算 よくよく見かける匿名関数でnumだけの合計を出します。やってることはJavascriptとそうは変わりないです。範囲を指定し、足すために使う、値を戻してくる関数を渡します。 ラムダ式 - cpprefjp C++日本語リファレンス https://cpprefjp.github.io/lang/cpp11/lambda_expressions.html https://ideone.com/OizZHz #include<iostream> #include<random> #include<algorithm> #include<numeric> using namespace std; struct Example { int num; int num2; }; int main(){ const int number = 100; vector<Example> data; random_device seed_gen; mt19937 engine(seed_gen()); uniform_real_distribution<> dist1(-100.0, 100.0); for(int i=0; i<number; i++){ //data.emplace_back(Example{(int)dist1(engine), (int)dist1(engine)}); data.emplace_back(Example{i, i}); } //check for_each(data.begin(), data.end(), [](auto d){ cout << d.num << " " << d.num2 << ", "; } ); cout << endl; const int sum = accumulate(data.begin()+50, data.begin()+56+1, 0, [](int acc, auto d){ return acc + d.num; } ); cout << sum << endl; return 0; }
質問者からのお礼コメント
ありがとうございました!!解決しました。 ご丁寧な記述大変参考になりました。
お礼日時:5/28 12:22