Punteros y arrays dinámicos
Parte de la sección Lógica y Flujo del Journey de C++ de Coddy — lección 56 de 56.
Desafío
FácilCrea un programa que demuestre la gestión dinámica de memoria construyendo un sistema flexible de almacenamiento y procesamiento de números. Este desafío pondrá a prueba tu comprensión de los arreglos dinámicos, la asignación de memoria, la manipulación de arreglos y la limpieza adecuada de la memoria.
Se proporcionarán las siguientes entradas:
- Un número entero
sizeque representa la cantidad de enteros a almacenar - Luego,
sizeenteros que representan los números que se almacenarán en el arreglo dinámico
Tu programa debe:
- Leer el tamaño desde la entrada
- Asignar dinámicamente un arreglo de enteros usando
new[]con el tamaño especificado - Leer los enteros desde la entrada y almacenarlos en el arreglo asignado dinámicamente
- Calcular la suma de todos los números en el arreglo
- Encontrar el valor máximo en el arreglo
- Imprimir los resultados en el formato especificado
- Desasignar adecuadamente la memoria usando
delete[]
Utiliza exactamente el siguiente formato de salida:
Array size: [size]
Sum: [sum_of_all_numbers]
Maximum: [maximum_value]Recuerda que la asignación dinámica de memoria te permite crear arreglos cuyo tamaño se determina en tiempo de ejecución basándose en la entrada del usuario. Usa new int[size] para asignar el arreglo y accede a los elementos usando la notación de arreglos array[index]. Una vez que hayas terminado de usar el arreglo, debes llamar a delete[] array para liberar la memoria asignada y prevenir fugas de memoria. El arreglo existe en el heap y persistirá hasta que lo desasignes explícitamente.
Pruébalo tú mismo
#include <iostream>
using namespace std;
int main() {
// Leer el tamaño del arreglo
int size;
cin >> size;
// TODO: Escribe tu código aquí
// 1. Asignar dinámicamente un arreglo usando new[]
// 2. Leer los enteros y almacenarlos en el arreglo
// 3. Calcular la suma de todos los números
// 4. Encontrar el valor máximo
// 5. No olvides liberar la memoria usando delete[]
// Mostrar los resultados (reemplazar con variables reales)
cout << "Array size: " << size << endl;
cout << "Sum: " << /* variable de suma */ << endl;
cout << "Maximum: " << /* variable de máximo */ << endl;
return 0;
}Todas las lecciones de Lógica y Flujo
1Punteros y memoria
¿Qué es un puntero?Operador de direcciónOperador de desreferenciaPunteros nulosPunteros y arraysMemoria dinámica con 'new'Liberar memoria con 'delete'Resumen: Práctica de punteros2Vectores (Arrays dinámicos)
Introducción a std::vectorCreación de un VectorAgregar elementosAcceder a los elementosTamaño del VectorIterar con un bucle ForBucle For basado en rangosEliminar elementosResumen - Operaciones con Vectores5Proyecto: Herramienta de inventario
Configuración del proyectoAgregar y actualizar artículos3Proyecto: Herramienta de lista de tareas
Descripción general del proyectoAñadir una tarea