single
Asignación Dinámica de Arreglos
Desliza para mostrar el menú
Antes de explorar por qué es necesaria la asignación dinámica, repasemos rápidamente las características de los arreglos estáticos y dinámicos:
Arreglo Estático
- Tamaño fijo: una vez declarado, el tamaño de un arreglo estático es fijo y no puede cambiarse durante la ejecución;
- Asignación de memoria en tiempo de compilación: la memoria requerida para un arreglo estático se asigna en tiempo de compilación.
Arreglos dinámicos
- Redimensionable: los arreglos dinámicos permiten cambiar su tamaño durante la ejecución, proporcionando flexibilidad para adaptarse a los requisitos cambiantes del programa;
- Asignación de memoria en tiempo de ejecución: la memoria para los arreglos dinámicos se asigna durante la ejecución del programa.
Las limitaciones de un enfoque estático
Considere el programa que solicita al usuario que ingrese las puntuaciones de rendimiento para cada día que ha transcurrido en el mes actual.
Desafortunadamente, no podemos lograr esto utilizando un arreglo estático:
main.cpp
12345678910#include <iostream> #include <ctime> int main() { std::time_t currentTime = std::time(nullptr); int day_passed = std::localtime(¤tTime)->tm_mday; int arr[day_passed]; std::cout << day_passed << std::endl; }
Esto generará un error de compilación porque day_passed no es una expresión constante, depende del valor en tiempo de ejecución del día actual del mes.
Por lo tanto, en lugar de un arreglo estático debemos utilizar un arreglo asignado dinámicamente.
Desliza para comenzar a programar
Imagina que trabajas como meteorólogo y necesitas analizar lecturas de temperatura a lo largo del día.
Trabajarás con punteros y funciones que manipulan arreglos de datos asignados dinámicamente.
- Inicializar las variables
sumen 0,minTempcon el primer elemento del arreglo ymaxTempcon el primer elemento del arreglo. - Recorrer el arreglo
tempsutilizando un cicloforcon un índiceidesde 0 hastahours. - Para cada elemento
temps[i], sumar su valor asum. - Si
temps[i]es menor queminTemp, asignartemps[i]aminTemp. - Si
temps[i]es mayor quemaxTemp, asignartemps[i]amaxTemp. - Calcular la temperatura promedio dividiendo
sumentrehoursy almacenarla en la variableaverage. - Imprimir los valores de
minTemp,maxTempyaverageen la consola.
Solución
¡Gracias por tus comentarios!
single
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla