/* Uso de listas de argumentos de longitud variable - Deitel&Deitel - Página 484 (Otros temas de C) - Capítulo 14 UTN - FRP | 2014 | Informática II */ #include #include // Nuevo double promedio(unsigned int i, ...); /* * Protito de una función con una lista de argumentos variable. * Observación: los "..." siempre van al final. */ // Main int main(int argc, char *argv[]) { double W = 37.5, X = 22.5, Y = 1.7, Z = 10.2; printf("%s%.1f\n%s%.1f\n%s%.1f\n%s%.1f\n\n", "W = ", W, "X = ", X, "Y = ", Y, "Z = ", Z); printf("%s%.3f\n%s%.3f\n%s%.3f\n\n", "El promedio de W y X es ", promedio(2, W, X), /* Nuevo */ "El promedio de W, X y Y es ", promedio(3, W, X, Y), /* Nuevo */ "El promedio de W, X, Y y Z es ", promedio(4, W, X, Y, Z) /* Nuevo */ ); system("PAUSE"); return 0; } // Calculo de promedio a través de la función definida anteriormente double promedio(unsigned int i, ...) { // Variables double total = 0; // Contador para seleccionar argumentos unsigned int j; va_list ap; // -> Almacena la información necesaria para va_start y va_end // Nuevo va_start(ap, i); // Inicialización del objeto va_list // Nuevo // Procesar lista de argumentos de longitud variable for (j = 1; j <= i; j++) total += va_arg(ap, double); // Nuevo // Limpia la lista de argumentos de longitud variable va_end(ap); // Nuevo return total/i; }