// ex_ch10_11.c
#include <stdio.h>
// number of months in a year
#define MONTHS 12
// number of years of data
#define YEARS 5

void sum_yearly_rainfall(const float raindata[][MONTHS]);
float yearly_average(const float raindata[][MONTHS]);
void monthly_averages(const float raindata[][MONTHS]);

int main(void)
{
	// initializing rainfall data for 2000 - 2004
	const float rain[YEARS][MONTHS] =
	{
		{4.3, 4.3, 4.3, 3.0, 2.0, 1.2, 0.2, 0.2, 0.4, 2.4, 3.5, 6.6},
		{8.5, 8.2, 1.2, 1.6, 2.4, 0.0, 5.2, 0.9, 0.3, 0.9, 1.4, 7.3},
		{9.1, 8.5, 6.7, 4.3, 2.1, 0.8, 0.2, 0.2, 1.1, 2.3, 6.1, 8.4},
		{7.2, 9.9, 8.4, 3.3, 1.2, 0.8, 0.4, 0.0, 0.6, 1.7, 4.3, 6.2},
		{7.6, 5.6, 3.8, 2.8, 3.8, 0.2, 0.0, 0.0, 0.0, 1.3, 2.6, 5.2}
	};
	
	printf(" YEAR    RAINFALL  (inches)\n");
	sum_yearly_rainfall(rain);

	printf("\nThe yearly average is %.1f inches.\n\n",
	       yearly_average(rain));
	printf("MONTHLY AVERAGES:\n\n");
	printf(" Jan  Feb  Mar  Apr  May  Jun  Jul  Aug  Sep  Oct  Nov  Dec\n");
	monthly_averages(rain);
	
	return 0;
}

void sum_yearly_rainfall(const float raindata[][MONTHS])
{	
	int year, month;
	float subtot, total;
	
	for (year = 0, total = 0; year < YEARS; year++)
	{
		// for each year, sum rainfall to each month
		for (month = 0, subtot = 0; month < MONTHS; month++)
			subtot += raindata[year][month];
		printf("%5d %15.1f\n", 2000 + year, subtot);
		
		// total for all years
		total += subtot;
	}
}

float yearly_average(const float raindata[][MONTHS])
{
	int year, month;
	float total, subtot;
	
	for (year = 0, total = 0; year < YEARS; year++)
	{
		// for each year, sum rainfall to each month
		for (month = 0, subtot = 0; month < MONTHS; month++)
			subtot += raindata[year][month];
		// total for all years
		total += subtot;
	}
	return total / YEARS;
}

void monthly_averages(const float raindata[][MONTHS])
{
	int month, year;
	float subtot;
	
	for (month = 0; month < MONTHS; month++)
	{
		// for each month, sum rainfall over years
		for (year = 0, subtot = 0; year < YEARS; year++)
			subtot += raindata[year][month];
		printf("%4.1f ", subtot/YEARS);
	}
	printf("\n");
}
