Menu
CoddyTech

Resumen: Arrays dinámicos

Parte de la sección Lógica y Flujo del Journey de C de Coddy. Lección 37 de 63.

challenge icon

Desafío

Fácil

Escribe un programa en C que cree un arreglo dinámico según la entrada del usuario, procese los datos y demuestre una gestión adecuada de la memoria. Tu programa debe:

  1. Leer del usuario un entero n que represente el número de elementos que se almacenarán
  2. Usar malloc() con sizeof() para asignar dinámicamente memoria para un arreglo de n enteros
  3. Comprobar si la asignación de memoria se realizó correctamente; si falla, imprimir Memory allocation failed! y terminar el programa
  4. Si la asignación se realiza correctamente, imprimir Array of size [n] created successfully!
  5. Leer del usuario n valores enteros y almacenarlos en el arreglo asignado
  6. Calcular e imprimir la suma de todos los elementos con el formato: Sum: [value]
  7. Encontrar e imprimir el valor mínimo con el formato: Minimum: [value]
  8. Contar cuántos elementos son mayores que el promedio e imprimir el resultado con el formato: Elements above average: [count]
  9. Imprimir la memoria total utilizada, en bytes, con el formato: Memory used: [bytes] bytes
  10. Usar free() para liberar la memoria
  11. Imprimir Memory successfully freed! para confirmar que se realizó una limpieza adecuada

Recuerda incluir el encabezado <stdlib.h> para usar malloc() y free(). Este desafío pone a prueba tu comprensión completa de la gestión dinámica de memoria, desde la asignación hasta el uso y la liberación adecuada.

Por ejemplo, si la entrada es:

5
12 8 15 3 20

Tu salida debería ser:

Array of size 5 created successfully!
Sum: 58
Minimum: 3
Elements above average: 3
Memory used: 20 bytes
Memory successfully freed!

Este desafío integral demuestra el ciclo de vida completo de la gestión dinámica de memoria mientras se realizan operaciones útiles de procesamiento de datos en el arreglo asignado.

Pruébalo tú mismo

#include <stdio.h>
#include <stdlib.h>

int main() {
    // Lee el número de elementos
    int n;
    scanf("%d", &n);
    
    // TODO: Escribe tu código a continuación
    // 1. Reserva memoria para n enteros usando malloc()
    // 2. Comprueba si la reserva de memoria se realizó correctamente
    // 3. Lee n enteros y guárdalos en el arreglo
    // 4. Calcula la suma, encuentra el mínimo y cuenta los elementos superiores al promedio
    // 5. Imprime los resultados y libera la memoria
    
    return 0;
}

Todas las lecciones de Lógica y Flujo

Practica por tu cuenta: Compilador de C online