# C Programming (Turbo C++ Compiler) - Calculate Sample and Population Standard Deviation

I have given the simple C program for calculating sample and population standard deviation for a set of numbers. The other related linkes are,

Calculate Mean

Calculate Median

Calculate Mode

Calculate Range

Calculate Variance

Calculate Standard Deviation

## Source Code

#include <stdlib.h>

#include <stdio.h>

#include <math.h>

typedef struct _Pair

{

int key;

int value;

} Pair;

typedef struct _Collection

{

Pair m_pair[100];

int m_maxElements;

} Collection;

const char* CalculateMode(float *arrValue, int max)

{

static char mode[256] = "";

char buf[32];

float value[100];

int i, j;

int highcount = 0;

float temp;

int nIndex = -1;

Collection map;

Pair ptemp;

memset(map.m_pair, 0, sizeof(Pair) * 100);

map.m_maxElements = 0;

if(max > 100)

return 0;

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

value[i] = arrValue[i];

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

{

for(j = 0; j < max - i - 1; j++)

{

if(value[j] > value[j + 1])

{

temp = value[j];

value[j] = value[j + 1];

value[j + 1] = temp;

}

}

}

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

{

// Insert arrValue[i] to the map

nIndex = -1;

for(j = 0; j < map.m_maxElements; j++)

{

if(map.m_pair[j].key == value[i])

{

nIndex = j;

break;

}

}

if(nIndex == -1)

{

map.m_pair[map.m_maxElements].key = value[i];

map.m_pair[map.m_maxElements].value = 1;

map.m_maxElements++;

}

else

{

// map.m_pair[nIndex].key = value[i]; // alreday written

map.m_pair[nIndex].value++;

}

}

for(i = 0; i < map.m_maxElements; i++)

{

for(j = 0; j < map.m_maxElements - i - 1; j++)

{

if(map.m_pair[j].value < map.m_pair[j + 1].value)

{

ptemp = map.m_pair[j];

map.m_pair[j] = map.m_pair[j + 1];

map.m_pair[j + 1] = ptemp;

}

}

}

highcount = map.m_pair[0].value;

for(i = 0; i < map.m_maxElements; i++)

{

if(highcount == map.m_pair[i].value)

{

sprintf(buf, "%d ", map.m_pair[i].key);

strcat(mode, buf);

}

//std::cout << map.m_pair[i].key << " " << map.m_pair[i].value << "\n";

}

return mode;

}

float CalculateMedian(float *arrValue, int max)

{

float median = 0;

float value[100];

int i, j;

float temp;

if(max > 100)

return 0;

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

value[i] = arrValue[i];

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

{

for(j = 0; j < max - i - 1; j++)

{

if(value[j] > value[j + 1])

{

temp = value[j];

value[j] = value[j + 1];

value[j + 1] = temp;

}

}

}

if( (max % 2) == 1)

{

median =  value[ (max + 1) / 2 - 1];

}

else

{

median = (value[max / 2] + value[max / 2 - 1]) / 2;

}

return median;

}

const char* CalculateRange(float *arrValue, int max)

{

static char range[128];

int i, small, big;

small = big = arrValue[0];

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

{

if(arrValue[i] > big)

big = arrValue[i];

if(arrValue[i] < small)

small = arrValue[i];

}

sprintf(range, "%d - %d", small, big);

return range;

}

float CalculateMean(float *value, int max)

{

int i;

float sum = 0;

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

sum = sum + value[i];

return (sum / max);

}

float CalculateVariane(float *value, int max)

{

float mean = CalculateMean(value, max);

int i = 0;

float temp = 0;

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

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

return temp / max;

}

float CalculateSampleVariane(float *value, int max)

{

float mean = CalculateMean(value, max);

float temp = 0;

int i = 0;

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

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

return temp / (max - 1);

}

float GetStandardDeviation(float *value, int max)

{

return sqrt(CalculateVariane(value, max));

}

float GetSampleStandardDeviation(float *value, int max)

{

return sqrt(CalculateSampleVariane(value, max));

}

int main()

{

float arrNumbers[100];

int i, max;

float mean, devi, sampledevi;

float median;

const char *mode, *range;

char buf[1024];

float variance, samplevariance;

printf("Total Number of Elements: ");

scanf("%d", &max);

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

{

printf("Enter [%d] Number: ", i + 1);

scanf("%f", &arrNumbers[i]);

}

printf("\nTotal Numbers: %d", max);

mean = CalculateMean(arrNumbers, max);

mode = CalculateMode(arrNumbers, max);

median = CalculateMedian(arrNumbers, max);

range = CalculateRange(arrNumbers, max);

variance = CalculateVariane(arrNumbers, max);

samplevariance = CalculateSampleVariane(arrNumbers, max);

devi = GetStandardDeviation(arrNumbers, max);

sampledevi = GetSampleStandardDeviation(arrNumbers, max);

printf("\nMean: %f", mean);

printf("\nMedian: %f", median);

printf("\nMode: %s", mode);

printf("\nRange: %s", range);

printf("\nSample Variance: %f", samplevariance);

printf("\nPopulation Variance: %f",  variance);

printf("\nSample Stdandrd Deviation: %f", sampledevi);

printf("\nPopulation Standard Deviation: %f", devi);

return 0;

}

## Output

Total Number of Elements: 10

Enter [1] Number: 6

Enter [2] Number: 7

Enter [3] Number: 8

Enter [4] Number: 7

Enter [5] Number: 6

Enter [6] Number: 5

Enter [7] Number: 2

Enter [8] Number: 2

Enter [9] Number: 9

Enter [10] Number: 3

Total Numbers: 10

Mean: 5.500000

Median: 6.000000

Mode: 2 6 7

Range: 2 - 9

Sample Variance: 6.055555

Population Variance: 5.450000

Sample Stdandrd Deviation: 2.460804

Population Standard Deviation: 2.334523