#include <stdio.h>
#include <stdarg.h>
double median(int n, ...)
{
int i = n / 2;
double m;
va_list argptr;
va_start(argptr, n);
if (n % 2) {
while (i-- > 0) va_arg(argptr, double);
m = va_arg(argptr, double);
}
else {
while (--i > 0) va_arg(argptr, double);
m = ((va_arg(argptr, double) +
va_arg(argptr, double)) / 2.0);
}
va_end(argptr);
return m;
}
int main(int argc, char *argv[])
{
double arr_odd[3] = { 1.0, 3.5, 7.5 };
double arr_even[4] = { 1.0, 2.5, 3.5, 7.5 };
printf("median of [ %.2f %.2f %.2f ] is %.2f\n",
arr_odd[0], arr_odd[1], arr_odd[2],
median(3, arr_odd[0], arr_odd[1], arr_odd[2]));
printf("median of [ %.2f %.2f %.2f %.2f ] is %.2f\n",
arr_even[0], arr_even[1], arr_even[2], arr_even[3],
median(4, arr_even[0], arr_even[1], arr_even[2], arr_even[3]));
return 0;
}