# C++ - Calculate Mean, Variance, Standard Deviation

Mean, Variance and Standard Deviation are widely used in statistical application. It is a good idea to start writing program in C++ on this.

Note the difference between sample variance and population variance, similarly sample standard deviation and population standard deviation

The complete program and test run output are given below:

## Source Code

#include <iostream>
#include <string>
#include <math.h>

class
StdDeviation
{

private:

int max;

double value[100];

double mean;

public:

double CalculateMean()

{

double sum = 0;

for(int i = 0; i < max; i++)

sum += value[i];

return (sum / max);

}

double CalculateVariane()

{

mean = CalculateMean();

double temp = 0;

for(int i = 0; i < max; i++)

{

temp += (value[i] - mean) * (value[i] - mean) ;

}

return temp / max;

}

double CalculateSampleVariane()

{

mean = CalculateMean();

double temp = 0;

for(int i = 0; i < max; i++)

{

temp += (value[i] - mean) * (value[i] - mean) ;

}

return temp / (max - 1);

}

int SetValues(double *p, int count)

{

if(count > 100)

return -1;

max = count;

for(int i = 0; i < count; i++)

value[i] = p[i];

return 0;

}

double GetStandardDeviation()

{

return sqrt(CalculateVariane());

}

double GetSampleStandardDeviation()

{

return sqrt(CalculateSampleVariane());

}

};

int main()

{

double arrNumbers[] =

{

15.17, 16.94, 14.94, 14.99, 13.77, 13.75,

12.67, 12.14, 12.59, 12.48, 14.81, 14.29,

12.74, 12.52, 11.65, 12.24, 11.42, 12.25,

12.72, 11.64, 11.09, 11.22, 11.50, 11.36,

11.84, 12.18, 11.04, 10.90, 11.80, 11.84,

};

StdDeviation sd;

sd.SetValues(arrNumbers, sizeof(arrNumbers) / sizeof(arrNumbers[0]));

double mean = sd.CalculateMean();

double variance = sd.CalculateVariane();

double samplevariance = sd.CalculateSampleVariane();

double sampledevi = sd.GetSampleStandardDeviation();

double devi = sd.GetStandardDeviation();

char buf[1024];

sprintf(buf, "Total Numbers\t\t\t: %10d\n", sizeof(arrNumbers) / sizeof(arrNumbers[0]));

std::cout << buf;

sprintf(buf, "Mean\t\t\t\t: %10.5lf\nPopulation Variance\t\t: %10.4lf\n", mean, variance);

std::cout << buf;

sprintf(buf, "Sample variance\t\t\t: %10.4lf\n", samplevariance);

std::cout << buf;

sprintf(buf, "Population Standard Deviation\t: %10.4lf\n", devi);

std::cout << buf;

sprintf(buf, "Sample Standard Deviation\t: %10.4lf\n", sampledevi);

std::cout << buf;

return 0;

}

## Output

Total Numbers                   :         30

Mean                            :   12.68300

Population Variance             :     2.1607

Sample variance                 :     2.2352

Population Standard Deviation   :     1.4699

Sample Standard Deviation       :     1.4951

Press any key to continue . . .