Resumen: Arrays dinámicos
Parte de la sección Lógica y Flujo del Journey de C de Coddy. Lección 37 de 63.
Desafío
FácilEscribe 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:
- Leer del usuario un entero
nque represente el número de elementos que se almacenarán - Usar
malloc()consizeof()para asignar dinámicamente memoria para un arreglo denenteros - Comprobar si la asignación de memoria se realizó correctamente; si falla, imprimir
Memory allocation failed!y terminar el programa - Si la asignación se realiza correctamente, imprimir
Array of size [n] created successfully! - Leer del usuario
nvalores enteros y almacenarlos en el arreglo asignado - Calcular e imprimir la suma de todos los elementos con el formato:
Sum: [value] - Encontrar e imprimir el valor mínimo con el formato:
Minimum: [value] - Contar cuántos elementos son mayores que el promedio e imprimir el resultado con el formato:
Elements above average: [count] - Imprimir la memoria total utilizada, en bytes, con el formato:
Memory used: [bytes] bytes - Usar
free()para liberar la memoria - 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 20Tu 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
1Fundamentos de Punteros
¿Qué es un puntero?Declaración de punterosEl operador de dirección (&)El operador de desreferencia (*)Punteros NULLResumen: Conceptos básicos de punteros4Proyecto: Utilidad de texto simple
Descripción general del proyectoContar caracteres2Punteros y Arrays
Nombres de Arrays como PunterosElementos de un Array - PunterosAritmética de PunterosComparación de PunterosResumen: Recorrido de Arrays con Punteros5Punteros y funciones
Paso por valorPasar punteros a funcionesModificar variables mediante punterosUn ejemplo clásico: Intercambio (Swap)Pasar arrays a funcionesResumen: Argumentos de punteros a funciones3Arreglos de caracteres y cadenas
Cadenas como arreglos de charEl terminador nuloEntrada de cadenas con scanfUso de strlen()Uso de strcpy()Uso de strcat()Uso de strcmp()Resumen: Funciones básicas de cadenasPractica por tu cuenta: Compilador de C online