Skip to content

Instantly share code, notes, and snippets.

@dizballanze
Created February 23, 2015 22:35
Show Gist options
  • Save dizballanze/c6f64a0b095250141374 to your computer and use it in GitHub Desktop.
Save dizballanze/c6f64a0b095250141374 to your computer and use it in GitHub Desktop.
variable arguments count in C
#include <stdio.h>
#include <stdarg.h>
double average_known_count(int, double, double, ...);
double average_zero_ended(double, double, ...);
int main(void) {
double num1 = 16.6;
double num2 = 13.33;
double num3 = 66.6;
double num4 = 133.66;
printf("%.2lf\n", average_known_count(4, num1, num2, num3, num4));
printf("%.2lf\n", average_zero_ended(num1, num2, num3, num4, 0.0));
return 0;
}
double average_known_count(int count, double num1, double num2, ...) {
va_list parg;
double sum = num1 + num2;
va_start(parg, num2);
for (int i = 0; i < count-2; i++) {
sum += va_arg(parg, double);
}
va_end(parg);
return sum / count;
}
double average_zero_ended(double num1, double num2, ...) {
va_list parg;
int count = 2;
double sum = num1 + num2;
double arg;
va_start(parg, num2);
while ((arg = va_arg(parg, double)) != 0.0) {
sum += arg;
count++;
}
va_end(parg);
return sum / count;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment