Mega Code Archive

 
Categories / C Tutorial / Language
 

Calculate an average using variable argument lists

/* Beginning C: From Novice to Professional, Fourth Edition By Ivor Horton ISBN: 1-59059-735-4 640 pp. Published: Oct 2006 */ #include <stdio.h> #include <stdarg.h> double average(double v1 , double v2,...);       /* Function prototype */ int main(void) {   double Val1 = 10.5, Val2 = 2.5;   int num1 = 6, num2 = 5;   long num3 = 12, num4 = 20;   printf("\n Average = %lf", average(Val1, 3.5, Val2, 4.5, 0.0));   printf("\n Average = %lf", average(1.0, 2.0, 0.0));   printf("\n Average = %lf\n", average( (double)num2, Val2,(double)num1,                                       (double)num4,(double)num3, 0.0));   return 0; } /* Function to calculate the average of a variable number of arguments */ double average( double v1, double v2,...) {   va_list parg;              /* Pointer for variable argument list */   double sum = v1+v2;        /* Accumulate sum of the arguments    */   double value = 0;          /* Argument value                     */   int count = 2;             /* Count of number of arguments       */   va_start(parg,v2);         /* Initialize argument pointer        */   while((value = va_arg(parg, double)) != 0.0)   {     sum += value;     count++;   }   va_end(parg);              /* End variable argument process      */   return sum/count; } Average = 5.250000 Average = 1.500000 Average = 9.100000