Recapitulação: Array Dinâmico
Parte da seção Logic & Flow do Journey de C da Coddy — lição 37 de 63.
Desafio
FácilEscreva um programa em C que crie um array dinâmico com base na entrada do usuário, processe os dados e demonstre o gerenciamento adequado de memória. Seu programa deve:
- Ler um número inteiro
ndo usuário representando o número de elementos a serem armazenados - Usar
malloc()comsizeof()para alocar dinamicamente memória para um array deninteiros - Verificar se a alocação de memória foi bem-sucedida - se falhar, imprimir
Memory allocation failed!e encerrar o programa - Se a alocação for bem-sucedida, imprimir
Array of size [n] created successfully! - Ler
nvalores inteiros do usuário e armazená-los no array alocado - Calcular e imprimir a soma de todos os elementos no formato:
Sum: [value] - Encontrar e imprimir o valor mínimo no formato:
Minimum: [value] - Contar quantos elementos são maiores que a média e imprimir no formato:
Elements above average: [count] - Imprimir a memória total usada em bytes no formato:
Memory used: [bytes] bytes - Usar
free()para desalocar a memória - Imprimir
Memory successfully freed!para confirmar a limpeza adequada
Lembre-se de incluir o cabeçalho <stdlib.h> para usar malloc() e free(). Este desafio testa sua compreensão completa do gerenciamento dinâmico de memória, desde a alocação até o uso e a limpeza adequada.
Por exemplo, se a entrada for:
5
12 8 15 3 20Sua saída deve ser:
Array of size 5 created successfully!
Sum: 58
Minimum: 3
Elements above average: 2
Memory used: 20 bytes
Memory successfully freed!Este desafio abrangente demonstra o ciclo de vida completo do gerenciamento dinâmico de memória enquanto realiza operações significativas de processamento de dados no array alocado.
Experimente você mesmo
#include <stdio.h>
#include <stdlib.h>
int main() {
// Leia o número de elementos
int n;
scanf("%d", &n);
// TODO: Escreva seu código abaixo
// 1. Alocar memória para n inteiros usando malloc()
// 2. Verifique se a alocação foi bem-sucedida
// 3. Leia n inteiros para o array
// 4. Calcule a soma, encontre o mínimo, conte os elementos acima da média
// 5. Imprima os resultados e libere a memória
return 0;
}Todas as lições de Logic & Flow
1Fundamentos de Ponteiros
O que é um Ponteiro?Declarando PonteirosO Operador de Endereço (&)O Operador de Desreferência (*)Ponteiros NULLRecapitulação: Fundamentos de Ponteiros4Projeto: Utilitário de Texto Simples
Visão Geral do ProjetoContando Caracteres2Ponteiros e Arrays
Nomes de Arrays como PonteirosElementos de Array - PonteirosAritmética de PonteirosComparando PonteirosRecapitulação: Percorrendo Arrays com Ponteiros5Ponteiros e Funções
Passagem por ValorPassando Ponteiros para FunçõesModificando Variáveis via PonteirosUm Exemplo Clássico: SwapPassando Arrays para FunçõesRecapitulação: Ponteiros como Argumentos3Arrays de Caracteres e Strings
Strings como Arrays de charO Terminador NuloEntrada de Strings com scanfUsando strlen()Usando strcpy()Usando strcat()Usando strcmp()Recapitulação: Funções Básicas de Strings6Gerenciamento de Memória
Memória Stack vs. HeapAlocação Dinâmica - malloc()Usando sizeof() para AlocaçãoVerificando Falhas de AlocaçãoLiberando Memória com free()Alocando com calloc()Recapitulação: Array Dinâmico9Projeto: Cadastro Simples de Contatos
Projeto: Definir a Struct de ContatoFunção para Criar um Contato