PHP Code:
/*finds yearly totals, yearly average, and monthly average for several years of rainfall data using ptr notation */
#include <stdio.h>
#define MONTHS 12
#define YEARS 5
int main(void)
{
// initializing rainfall data
const float rain[YEARS][MONTHS] = {
{10.1, 8.1, 6.8, 4.2, 2.1, 1.8, 0.2, 0.3, 1.1, 2.3, 6.1, 7.4},
{9.2, 9.8, 4.4, 3.3, 2.2, 0.8, 0.4, 0.0, 0.6, 1.7, 4.3, 5.2},
{6.6, 5.5, 3.8, 2.8, 1.8, 0.2, 0.0, 0.0, 0.0, 1.3, 2.6, 4.2},
{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}
};
int year, month;
float subtot, total;
const float (*data)[MONTHS];
data = rain;
printf(" YEAR RAINFALL (inches)\n");
for (year = 0, total = 0; year < YEARS; year++)
{ // for each year, sum rainfall for each month
for (month = 0, subtot = 0; month < MONTHS; month++)
subtot += *(*(rain + year) + month);
/* or data[year][month] */
printf("%5d %15.1f\n", 1997 + year, subtot);
total += subtot; // total for all years
}
printf("\nThe yearly average is %.1f inches.\n\n", total/YEARS);
printf("MONTHLY AVERAGES:\n\n");
printf(" Jan Feb Mar Apr May Jun Jul Aug Sep Oct ");
printf(" Nov Dec\n");
for (month = 0; month < MONTHS; month++)
{ // for each month, sum rainfall over years
for (year = 0, subtot =0; year < YEARS; year++)
subtot += *(*(rain + year) + month);
printf("%4.1f ", subtot/YEARS);
}
printf("\n");
getchar();
return 0;
}
note: this could easily have been written in array notation as well. As you'll see sometimes it is not mandatory to use pointers. "the dual nature of them tends to confuse ppl"