single
Alocação Dinâmica de Arrays
Deslize para mostrar o menu
Antes de explorarmos por que a alocação dinâmica é necessária, vamos recapitular rapidamente as características dos arrays estáticos e dinâmicos:
Array Estático
- Tamanho Fixo: uma vez declarado, o tamanho de um array estático é fixo e não pode ser alterado durante a execução;
- Alocação de Memória em Tempo de Compilação: a memória necessária para um array estático é alocada em tempo de compilação.
Arrays Dinâmicos
- Redimensionável: arrays dinâmicos permitem redimensionamento em tempo de execução, proporcionando flexibilidade para se adaptar a requisitos variáveis do programa;
- Alocação de Memória em Tempo de Execução: a memória para arrays dinâmicos é alocada durante a execução do programa.
As Limitações de uma Abordagem Estática
Considere o programa que solicita ao usuário a entrada das pontuações de desempenho para cada dia que passou no mês atual.
Infelizmente, não é possível alcançar isso usando um array 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; }
Isso gerará um erro de compilação porque day_passed não é uma expressão constante; ela depende do valor em tempo de execução do dia atual do mês.
Portanto, em vez de um array estático, é necessário utilizar um array alocado dinamicamente.
Deslize para começar a programar
Imagine que você está trabalhando como meteorologista e precisa analisar leituras de temperatura ao longo do dia.
Você irá trabalhar com ponteiros e funções que manipulam arrays de dados alocados dinamicamente.
- Inicialize as variáveis
sumcom 0,minTempcom o primeiro elemento do array emaxTempcom o primeiro elemento do array. - Percorra o array
tempsutilizando um laçoforcom o índiceide 0 atéhours. - Para cada elemento
temps[i], adicione seu valor asum. - Se
temps[i]for menor queminTemp, atribuatemps[i]aminTemp. - Se
temps[i]for maior quemaxTemp, atribuatemps[i]amaxTemp. - Calcule a temperatura média dividindo
sumporhourse armazene em uma variávelaverage. - Imprima os valores de
minTemp,maxTempeaverageno console.
Solução
Obrigado pelo seu feedback!
single
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo