Ejercicio 02 — Calcular la suma y la media de un array de N enteros

Dificultad: verde · Módulo 05 (Arrays y cadenas)

Enunciado

Calcular la suma y la media de un array de N enteros.

Diagrama de flujo

Diagrama de flujo del ejercicio 02

Cómo se resuelve

Este ejercicio es el patrón clásico de acumular mientras se recorre un array. Tras leer los n enteros en a, sumamos todos sus elementos y calculamos la media.

  1. long suma = 0 — arrancamos el acumulador en 0 y en cada vuelta hacemos suma += a[i]. Usamos long en lugar de int porque si sumas muchos números grandes, un int podría desbordarse (dar la vuelta a un valor negativo sin avisar).
  2. La media necesita una división con decimales. Aquí está la trampa: suma / n con ambos enteros haría división entera y tiraría los decimales (30/4 daría 7, no 7.5). La solución es forzar el cálculo en coma flotante con un cast:
double media = (double)suma / n;

Al convertir suma a double, la división pasa a ser real y conserva los decimales. Luego printf("%.2f", media) lo muestra con dos cifras.

Recuerda inicializar el acumulador a 0 antes del bucle: si lo dejas sin valor, arranca con basura y la suma sale mal.

Para practicar — cópialo en Dev-C++

Pega este esqueleto y completa los TODO. Es la mejor forma de aprender: inténtalo antes de mirar la solución.

/*
 * Curso de C — Modulo 05: Arrays y cadenas
 * Ejercicio 02 — PRACTICA (rellena los TODO)
 * Enunciado: Calcular la suma y la media de un array de N enteros.
 * Dificultad: verde
 * Compilar: gcc -std=c11 -Wall ej02_practica.c -o ej02 && ./ej02
 */
 
#include <stdio.h>
 
int main(void) {
    int n;
 
    // TODO 1: Pedir N al usuario y leerlo.
 
    // TODO 2: Declara el array de enteros (max 100).
 
    // TODO 3: Leer los N enteros del usuario con un bucle for.
 
    // TODO 4: Declara una variable 'suma' de tipo long inicializada a 0.
    //         Recorre el array y acumula la suma.
 
    // TODO 5: Calcula la media como double. Pista: necesitas un cast.
    //         (double)suma / n
 
    // TODO 6: Imprime suma y media con 2 decimales.
 
    return 0;
}

Solución — cópiala y ejecútala

/*
 * Curso de C — Modulo 05: Arrays y cadenas
 * Ejercicio 02 — MODELO (resuelto)
 * Enunciado: Calcular la suma y la media de un array de N enteros.
 * Dificultad: verde
 * Compilar: gcc -std=c11 -Wall ej02_modelo.c -o ej02 && ./ej02
 */
 
#include <stdio.h>
 
int main(void) {
    int n;
    printf("Cuantos numeros (max 100)? ");
    scanf("%d", &n);
 
    if (n < 1 || n > 100) {
        printf("N debe estar entre 1 y 100.\n");
        return 1;
    }
 
    int a[100];
    for (int i = 0; i < n; i++) {
        printf("a[%d] = ", i);
        scanf("%d", &a[i]);
    }
 
    // Acumular la suma; usamos long para evitar desbordamiento con valores grandes
    long suma = 0;
    for (int i = 0; i < n; i++) {
        suma += a[i];
    }
 
    // La media requiere division real: cast a double
    double media = (double)suma / n;
 
    printf("Suma: %ld\n", suma);
    printf("Media: %.2f\n", media);
 
    return 0;
}

Cómo usarlo

Dev-C++ (Windows): Archivo → Nuevo → Código fuente, pega el código y pulsa F11 (compilar y ejecutar). Si ves los acentos raros en la consola, escribe chcp 65001 y vuelve a ejecutar.

Conexiones