#include <iostream>
#include <cstdlib>
#include <stdarg.h>

typedef int (*ptrFunc) ( int, ... );

int product ( int, ... );
int sum     ( int, ... );

int main(void)
{ ptrFunc pf;
  
  pf = product;
  cout << (*pf) (3, 4, 12, 11) << endl;
  cout << (*pf) (4, 4,  2, 11, 9) << endl;
  pf = sum;
  cout << (*pf) (3, 4, 12, 11) << endl;
  cout << (*pf) (4, 4,  2, 11, 9) << endl;
  
  return EXIT_SUCCESS;
}

int product (int x, ... )
{ va_list arg;
  int all = 1;
  
  va_start(arg,x);  
  for (int i = 0; i < x; i++)
   all = all * va_arg(arg, int);
  va_end(arg);
  return all;
}

int sum (int x, ... )
{ va_list arg;
  int all = 0;
  
  va_start(arg,x);  
  for (int i = 0; i < x; i++)
   all = all + va_arg(arg, int);
  va_end(arg);
  return all;
}