Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- 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 <stdio.h>
- #include <stdarg.h> // 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;
- }
Advertisement
Add Comment
Please, Sign In to add comment