Calculations using pointers instead of subscripts for two dimensional array. - C Pointer

C examples for Pointer:Array Pointer

Description

Calculations using pointers instead of subscripts for two dimensional array.

Demo Code

#include <stdio.h>

#define MONTHS 12 // number of months in a year 
#define YEARS 5 // number of years of data 

int main(void){
  // initializing rainfall data for 2010 - 2014
  const float rain[YEARS][MONTHS] = {
        {1.3,2.3,4.3,3.5,2.4,1.2,3.2,7.2,7.4,2.4,3.5,6.6},
        {8.5,8.3,4.2,1.6,2.4,3.3,5.2,6.9,8.3,2.9,1.4,7.3},
        {9.1,8.5,6.5,4.3,2.1,4.8,0.2,5.2,1.1,2.3,6.1,8.4},
        {7.2,9.9,8.4,6.3,1.2,4.8,0.4,4.1,8.6,1.7,4.3,6.2},
    {8.5,8.3,4.2,1.6,2.4,3.3,5.2,6.9,8.3,2.9,1.4,7.3}
  };//  w w  w.jav a2 s.co m


  float subtot, total;

  const float (*year_ptr)[MONTHS];
  const float *month_ptr;

  for (year_ptr = rain, total = 0; year_ptr < rain + YEARS; year_ptr++)
  {
    for (month_ptr = *year_ptr, subtot = 0; month_ptr < *year_ptr + MONTHS; month_ptr++)
      subtot += *month_ptr;

    printf("%5d %15.1f\n", (int) (2010 + (year_ptr - rain)), subtot);
    total += subtot; // total for all years }
  }

  printf("\nThe yearly average is %.1f inches.\n\n", total/YEARS);
  
  printf(" Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec\n");

  int month, year;

  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");
  return 0; 
}

Related Tutorials