// pointer to a function
// Date 20:07 29/10/2016
// By Ben a.k.a DreamVB

#include <iostream>

using namespace std;
using std::cout;
using std::endl;

double cubed(double i){
	return i*i*i;
}

double squared(double i){
	return i*i;
}

double Sum(double i){
	int t = 0;
	t += i;
	return i;
}

double SumArray(double data[], int length, double(*func)(double)){
	double sum = 0;
	for (int i = 0; i < length; i++){
		sum += func(data[i]);
	}
	return sum;
}


int main(int argc, char *argv[]){

	double data[] = { 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5,8.5,9.5 };
	int len = _countof(data);

	cout << "Sum of data    : " << SumArray(data, len, Sum) << endl;
	cout << "Sum of squares : " << SumArray(data, len, squared) << endl;
	cout << "Sum of cubes   : " << SumArray(data, len, cubed) << endl;

	system("pause");
	return 0;
}