У меня есть эта программа, где он спрашивает пользователя, сколько значений пользователь введет, запрашивает значения и помещает их в вектор. Затем мне нужно рассчитать среднее и стандартное отклонение.
У меня есть средняя часть, но, похоже, что-то не так, и я получаю неправильную среднюю. И я не слишком уверен, как начать стандартную часть отклонения.
#include <iostream>
#include <vector>
#include <cmath>
using namespace std;
int main()
{
// Create vector
vector<double> values;
// Declare variables
double count;
double value;
double average;
double stdDev;
// Prompt user and get the number of values
cout << "How many values will you enter?\n";
cin >> count;
// Get the values from user and calculate average
for( double i = 1; i<= count; i++)
{
cin >> value;
values.push_back(value);
average+=values[i];
}
cout << average/count << '\n';
//Calculate standard deviationreturn 0;
}
любая помощь приветствуется.
использование double average = 0;
вместо double average;
И использовать values[i-1]
вместо values[i]
внутри петли.
Зачем?
Вы объявили среднее значение и не инициализировали его. Для этого у него есть значение, которое не может быть известно до выполнения кода. Когда вы добавляете value[i]
с average
это значение average
в этом. За это вы получаете неправильный вывод. Вам нужно добавить только все value[i]
, Так что инициализируйте average
с 0.
Векторная индексация основана на 0. Таким образом, n-й элемент, вставленный в вектор, будет находиться в [n-1] -й позиции.
Других решений пока нет …