Resumen: Arrays dinámicos
Parte de la sección Logic & Flow del Journey de C de Coddy — lección 37 de 63.
Desafío
FácilEscribe un programa en C que cree un array dinámico basado en la entrada del usuario, procese los datos y demuestre una gestión de memoria adecuada. Tu programa debe:
- Leer un entero
ndel usuario que represente el número de elementos a almacenar - Usar
malloc()consizeof()para asignar dinámicamente memoria para un array denenteros - Verificar si la asignación de memoria fue exitosa; si falla, imprimir
Memory allocation failed!y terminar el programa - Si la asignación tiene éxito, imprimir
Array of size [n] created successfully! - Leer
nvalores enteros del usuario y almacenarlos en el array asignado - Calcular e imprimir la suma de todos los elementos en el formato:
Sum: [value] - Encontrar e imprimir el valor mínimo en el formato:
Minimum: [value] - Contar cuántos elementos son mayores que el promedio e imprimir en el formato:
Elements above average: [count] - Imprimir la memoria total utilizada en bytes en el formato:
Memory used: [bytes] bytes - Usar
free()para liberar la memoria - Imprimir
Memory successfully freed!para confirmar la limpieza adecuada
Recuerda incluir la cabecera <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 limpieza 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: 2
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 de procesamiento de datos significativas en el array asignado.
Pruébalo tú mismo
#include <stdio.h>
#include <stdlib.h>
int main() {
// Leer el número de elementos
int n;
scanf("%d", &n);
// TODO: Escribe tu código a continuación
// 1. Asignar memoria para n enteros usando malloc()
// 2. Verificar si la asignación fue exitosa
// 3. Leer n enteros en el arreglo
// 4. Calcular la suma, encontrar el mínimo, contar elementos por encima del promedio
// 5. Imprimir resultados y liberar memoria
return 0;
}Todas las lecciones de Logic & Flow
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 cadenas