/* Array averaging procedure. */ #include <stdio.h> typedef char char_array[12][4]; /* Variable Type Declaration */ typedef double real_array[12]; typedef short int_array[12]; char_array month; /* Declaration Statements */ real_array sales; int_array units; short k, meanu; double save; void average(n, units, sales, iave, ave) short n; short *units; /* Procedure Declaration */ double *sales; short *iave; double *ave; { short cars, k; double dolls; cars = 0; dolls = 0.0; for (k = 0; k < n; k++) { cars += units[k]; dolls += sales[k]; } *iave = cars / n; /* To compute the average. */ *ave = dolls / n; /* You don't have to return any value */ } /* End of procedure */ /* since iave and ave variables are */ /* pointers. */ main() { /* Declaration Statement */ char *TEMP; printf("C66.C -> Average Program 1 (using averaging function)\n\n"); /* Assignment Statements */ for (k = 1; k <= 12; k++) { printf("Enter the month (Jan,Feb,...) : "); scanf("%s",month[k-1]); /* Read from keyboard entry */ printf("\nEnter number of units sold : "); scanf("%hd", &units[k - 1]); printf("\nSales (in million $): "); scanf("%lg", &sales[k - 1]); clrscr(); /* Clear screen after each loop */ } for (k=1;k<=12; k++) printf(" %s%7d%6.1f\n", month[k - 1], units[k - 1], sales[k - 1]); /* Data has been read, stored and printed. Now use procedure. */ average(12, units, sales, &meanu, &save); /* Call of procedure */ printf("\nMean=%7d%6.1f\n", meanu, save); return(0); } /* End of main Program C66 */ /* Input : Jan 5 12 Feb 4 78 Mar 1 3 Apr 5 32 May 6 12 June 5 32 July 1 12 Aug 34 12 Sep 4 10 Oct 5 23 Nov 1 23 Dec 0 0 Output : C66.C -> Average Program 1 (using averaging function) Month (Jan,Feb,...) : Jan Units Sold : 5 Sales (in million $): 12 Month (Jan,Feb,...) : Feb Units Sold : 4 Sales (in million $): 78 Month (Jan,Feb,...) : Mar Units Sold : 1 Sales (in million $): 3 Month (Jan,Feb,...) : Apr Units Sold : 5 Sales (in million $): 32 Month (Jan,Feb,...) : May Units Sold : 6 Sales (in million $): 12 Month (Jan,Feb,...) : June Units Sold : 5 Sales (in million $): 32 Month (Jan,Feb,...) : July Units Sold : 1 Sales (in million $): 12 Month (Jan,Feb,...) : Aug Units Sold : 34 Sales (in million $): 12 Month (Jan,Feb,...) : Sep Units Sold : 4 Sales (in million $): 10 Month (Jan,Feb,...) : Oct Units Sold : 5 Sales (in million $): 23 Month (Jan,Feb,...) : Nov Units Sold : 1 Sales (in million $): 23 Month (Jan,Feb,...) : Dec Units Sold : 0 Sales (in million $): 0 Jan 5 12.0 Feb 4 78.0 Mar 1 3.0 Apr 5 32.0 May 6 12.0 June 5 32.0 July 1 12.0 Aug 34 12.0 Sep 4 10.0 Oct 5 23.0 Nov 1 23.0 Dec 0 0.0 Mean= 5 20.8 */
{$G256} {$P512} {$D+} PROGRAM p6677 (input, output); TYPE char_array = ARRAY[1..12] OF string[3]; real_array = ARRAY[1..12] OF REAL; int_array = ARRAY[1..12] OF INTEGER; VAR month : char_array; sales : real_array; units : int_array; k, meanu : INTEGER; save : REAL; PROCEDURE average ( n : INTEGER; units : int_array; sales : real_array; VAR iave : INTEGER; VAR ave : REAL ); VAR cars, k : INTEGER; dolls : REAL; BEGIN cars := 0; dolls := 0.0; FOR k := 1 TO n DO BEGIN cars := cars + units[k]; dolls := dolls + sales[k] END; iave := cars DIV n; ave := dolls/n END; BEGIN writeln ( ^l ); writeln ( 'Average Program 1' ); writeln; FOR k := 1 TO 12 DO BEGIN readln ( month[k], units[k], sales[k] ); writeln ( ' ', month[k], units[k]:7, sales[k]:6:1 ) END; { Data has been read, stored and printed Now use procedure } average ( 12, units, sales, meanu, save ); writeln; writeln ( 'mean', meanu:7, save:6:1 ) END.DATA:
jan 672 3.4 feb 609 3.2 mar 715 3.7 apr 803 4.2 may 810 4.8 jun 831 5.1 jul 829 5.1 aug 727 5.1 sep 780 4.3 oct 703 3.9 nov 791 4.2 dec 783 3.6
Last modified: 28/05/96