Listing 2: Test driver for forfun


#include <stdio.h>
#define MAXNUMLOOPS 10

void forfun (int *, int *, int *, int , int);
void work(int *, int);

main()
{
int r[MAXNUMLOOPS], startval[MAXNUMLOOPS], endval[MAXNUMLOOPS],
     lastloopsub;

/*  Specify test data  */
/*  Must have  0 <= lastloopsub <= MAXNUMLOOPS - 1  */
lastloopsub = 2;

startval[0] = 0;
startval[1] = 1;
startval[2] = 5;
endval[0] = 2;
endval[1] = 4;
endval[2] = 7;
/*  End of test data specification */

/*  Explicitly nested for statements */
for (r[0] = startval[0]; r[0] <= endval[0]; r[0]++)
for (r[1] = startval[1]; r[1] <= endval[1]; r[1]++)
for (r[2] = startval[2]; r[2] <= endval[2]; r[2]++)
     work(r, lastloopsub);

/*  Recursively nested for statements  */
forfun (r, startval, endval, 0, lastloopsub);
exit (0);
}  /*  end of  main()  */

void work(int * r, int lastloopsub)
{
int loop;
for (loop = 0; loop <= lastloopsub; loop++)
      printf("r[%d] = %d ", loop, r[loop]);
printf("\n");
}
/* End of File */