All pastes #2092604 Raw Edit

Miscellany

public text v1 · immutable
#2092604 ·published 2011-10-22 18:33 UTC
rendered paste body
#include <iostream>
#include <string>
#include <vector>
#include <sstream>
#include <cmath>

using namespace std;

double mean(vector<int>& population)
{
	int sum = 0;
	for (unsigned int i = 0; i < population.size(); i++)
	{
		sum += population[i];
	}

	return (double)sum / (double)population.size();
}

double standardDeviation(vector<int>& population, double mean)
{
	double sum = 0;
	for (unsigned int i = 0; i < population.size(); i++)
	{
		sum += ((double)population[i] - mean) * ((double)population[i] - mean);
	}

	sum /= (double)(population.size()-1);
	sum = sqrt(sum); 

	return sum;
}

double personCoeff(vector<int>& popX, vector<int>& popY)
{
	double sum = 0,
		meanX = mean(popX),
		meanY = mean(popY),
		sigmaX = standardDeviation(popX, meanX),
		sigmaY = standardDeviation(popY, meanY);

	for (unsigned int i = 0; i < popX.size(); i++)
	{
		sum += ((double)popX[i] - meanX) * ((double)popY[i] - meanY);
	}

	sum /= (double)(popX.size() - 1);
	sum /= (sigmaX * sigmaY);

	return sum;
}

int main ()
{
	string input;
	cin >> input;

	vector<int> popX;
	vector<int> popY;

	while(input[0] != '-')
	{
		popX.push_back(atoi(input.c_str()));

		cin >> input;
		popY.push_back(atoi(input.c_str()));

		cin >> input;
	}

	if (popX.size() == 0 || popY.size() == 0)
	{
		printf("invalid input\n");
	}

	printf("%.4f\n", personCoeff(popX, popY));

	return 0;
}