// Solution to Exercise 18
// (NDE, 2013-01-09)
#include <vector>
#include <iostream>
#include <fstream>
#include <numeric>
#include <cmath>
using namespace std;
int main(int argc, char* argv[])
{
// Check command line
if (argc != 2) {
cerr << "Error: filename required" << endl;
return 1;
}
// Open file
ifstream infile(argv[1]);
if (not infile.is_open()) {
cerr << "Error: cannot open file" << endl;
return 1;
}
// Populate vector with data
vector<double> data;
double value;
while (infile >> value) {
data.push_back(value);
}
int size = data.size();
cout << "Vector has " << size << " elements" << endl;
// Compute mean
double sum = accumulate(data.begin(), data.end(), 0.0);
double mean = sum / size;
cout << "Mean = " << mean << endl;
// Compute and display standard deviation
sum = 0.0;
vector<double>::const_iterator i = data.begin();
for (; i != data.end(); ++i) {
double dev = *i - mean;
sum += dev*dev;
}
double std_dev = sqrt(sum / size);
cout << "Std dev = " << std_dev << endl;
return 0;
}