ユーザーが必要な数の数値を入力し、プログラムが数値の平均を返すプログラムを作成しようとしています。これまでのところ、プログラムは最後に入力された数値のみを出力します。
#include <vector>
#include <iostream>
#include <numeric>
using namespace std;
int main()
{
vector<float> v;
int input;
cout << " Please enter numbers you want to find the mean of:" <<endl;
while (cin >> input);
v.Push_back(input);
float average = accumulate( v.begin(), v.end(), 0.0/ v.size());
cout << "The average is" << average << endl;
return 0;
}
最初にwhile
の後にセミコロンを削除します
while (cin >> input);
~~
第二に、あなたの数学は間違っています
std::accumulate
の3番目の引数は、合計のinitial値です
代わりに:
float average = accumulate( v.begin(), v.end(), 0.0)/v.size();
また、コンテナデータタイプの要素shouldはコンテナタイプと一致します。つまり、float
float input ;
を使用
コードにはかなりの数のバグがありますが、実際にデバッグしましたか?ここに作業バージョンがあります:
#include <vector>
#include <iostream>
#include <numeric>
using namespace std;
int main()
{
vector<float> v;
float input;
cout << " Please enter numbers you want to find the mean of:" <<endl;
while (cin >> input)
v.Push_back(input);
float average = accumulate( v.begin(), v.end(), 0.0)/v.size();
cout << "The average is" << average << endl;
return 0;
}
_std::accumulate
_ の3番目の引数はinitialの値なので、0.0 / v.size()
から始めます(これは非常に小さい)、次にすべてのアイテムをベクターに追加します。
代わりに、ゼロの値を初期値として使用し、ベクトル内のすべての値の合計を計算した後、次にサイズで割ります。
そして、他の人が指摘したように、最後の値をベクトルに追加するだけです。
Vector_name.size()を使用して、ベクターの要素数を取得できます。これが平均を計算するための私の試みです:
#include <iostream>
#include <vector>
//function to compute average
double compute_average(std::vector<int> &vi) {
double sum = 0;
// iterate over all elements
for (int p:vi){
std::cout << "p is " << p << std::endl;
sum = sum + p;
}
return (sum/vi.size());
}
int main(){
std::vector <int>vi = {5,10};
double val;
val = compute_average(vi);
std::cout << "avg is " << val << std::endl;
return 0;
}