Função "malloc" e "calloc":

Documentos relacionados
1/34 GESTÃO DINÂMICA DE MEMÓRIA

Algoritmos e Estruturas de Dados. Prof. Marcelo Zorzan Profa. Melissa Zanatta

Alocação dinâmica de Memória

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: ponteiros e alocação dinâmica

Introdução à Ciência da Computação I. Alocação Dinâmica. Prof. Claudio Fabiano Motta Toledo

Exercício. Alocação Dinâmica. Alocação dinâmica de memória. Alocação de memória. Alocação da Memória Principal. Alocação da Memória Principal

A linguagem C permite dois tipos de alocação de memória: Alocação estática e alocação dinâmica.

Alocação Estática e Dinâmica. Prof. M.Sc. Mariella Berger

Modulo 12: alocação dinâmica de memória

Exercícios. Alocação Dinâmica. Alocação dinâmica de memória. Alocação de memória. Alocação da Memória Principal. Alocação da Memória Principal

Alocação Dinâmica em C

Ponteiros - Parte I. Ponteiros, Ponteiros e Vetores, Algoritmo Bubble Sort, Alocação Dinâmica de Memória

1 Exercícios com ponteiros

Linguagem C: Ponteiros - Alocação Dinâmica

Introdução a Programação. Ponteiros e Vetores, Alocação Dinâmica

Aula 8 Oficina de Programação Vetores. Profa. Elaine Faria UFU

Estruturas de Dados Aulas 3 e 4: Uso da. 14/03/2011 e 16/03/2011

Métodos Computacionais. Vetores e Matrizes Dinâmicas

BCC202 - Estrutura de Dados I

Computação 2. Aula 2. Profª. Fabiany Vetores e Matrizes

O que é um apontador em C (type pointer in C)?

LINGUAGEM C: ALOCAÇÃO DINÂMICA

Alocação Dinâmica de Memória - Exercício

DAS5102 Fundamentos da Estrutura da Informação

Alocação de Memória. Lucas Ferrari de Oliveira Professor Adjunto Universidade Federal do Paraná (UFPR)

Estrutura de dados 1. Ponteiros

Ponteiros e Alocação de Memória

A sintaxe para se declarar uma variável do tipo ponteiro é dada por:

ALGORITMOS E ESRUTRA DE DADOS I. Ponteiros Passagem por Valor e Referência Alocação de Memória

Estruturas Dinâmicas - Ponteiros

PONTEIROS E LISTAS. Kalinka Regina Lucas Jaquie Castelo Branco

Módulo 5 Vetores e Alocação Dinâmica

ALOCAÇÃO DINÂMICA DE MEMORIA Lista 10. A linguagem C/C++ possui recursos para alocação dinâmica de memoria.

Lista de Exercícios para P1 INF1007 (Prog2) 15/04/2013. ATENÇÃO: O material a seguir não sofreu revisão e pode conter erros.

Estruturas de Dados. Introdução Definição de Ponteiros Declaração de Ponteiros em C Manipulação de Ponteiros em C

Lista 1 Fundamentos de programação em C

Computação 2. Aula Profª. Fabiany Listas Duplamente Encadeadas

a) Implemente uma função que retorne uma aproximação do valor de π, de acordo com a F órmula de Leibniz: ( 1)

Exercícios: Arquivos

Algoritmos e Estruturas de dados

Aula 17: Ponteiros e Alocação Dinâmica em C

REVISÃO DE C. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

Vetores. e o programa deverá ler os valores separadamente:

Linguagem C estruturas de repetição

Ponteiros. Introdução e Alocação Dinâmica

Modulo 4: while do while (limites de variáveis)

Modularidade - Funções e Procedimentos

1 Exercícios com ponteiros

Disciplina de Algoritmos e Programação

Estrutura de Dados. Aula 07 Alocação Dinâmica

Transcrição:

Função "malloc" e "calloc": São funções utilizadas para fazer a alocação dinâmica de memória. Essas funções alocam o endereço de memória e retornam esse endereço a uma variável do tipo ponteiro. Com essas funções é possível alocar uma variável de um tipo primitivo ou até mesmo uma estrutura ou um vetor / matriz. Função "free": Variáveis alocadas dinamicamente continuam a existir mesmo depois que a execução da função termina, portanto é necessário liberar a memória ocupada por essas variáveis sempre que elas deixarem de ser utilizadas. Exemplo 01: Faça um programa que solicite o tamanho de um vetor, leia os seus valores e então o apresente na tela: #include <stdio.h> int *v; int n, i; printf("digite o tamanho do vetor:"); scanf ("%d", &n); v = (int*) malloc(n); for (i = 0; i < n; ++i){ printf("digite o elemento %d: ", i); scanf ("%d", &v[i]); for (i = 0; i < n; i++) printf ("v[%d] = %d ",i, v[i]); free (v); Ou ainda.

#include <stdio.h> int *v; int n, i; printf("digite o tamanho do vetor:"); scanf ("%d", &n); v = (int *)calloc(n, sizeof(int)); for (i = 0; i < n; ++i){ printf("digite o elemento %d: ", i); scanf ("%d", &v[i]); for (i = 0; i < n; i++) printf ("v[%d] = %d ",i, v[i]); free (v); Função "realloc": Função utilizada para realocar a memória. Essa função altera o tamanho de uma variável. Exemplo, um vetor passa de tamanho 3 para 5.

Exemplo 01: Faça um programa que solicite ao usuário diversos número. O programa será encerrado quando o usuário informar o valor 0. Ao final apresente os valores informados: #include <stdio.h> int x, i; int *N, numero; x = 0; do { printf("digite um numero (0 para sair): "); scanf("%d", &numero); if (numero == 0) break; x++; N = (int*) realloc(n, x * sizeof(int)); if (N!=NULL) { N[x-1] = numero; else { free(n); printf("nao foi possivel alocar a memoria."); exit; while (numero!= 0); printf ("Numbers entered: "); for (i=0;i<x;i++) printf ("valor: %d \n",n[i]); free (N);

Exercícios 1) Faça um programa em C que solicite uma quantidade de alunos e então, para cada aluno, solicite a nota. No final o programa deve exibir todas as notas. IMPORTANTE: As notas deverão ser armazenadas em um vetor com alocação dinâmica. 2) Faça um programa em C que solicite uma quantidade de pessoas. Para cada pessoa deverá ser perguntada a idade e o salário. No final o programa deverá exibir: - Idade da pessoa com o maior salário; - Idade da pessoa com o menor salário; - Salário da pessoa mais nova; - Salário da pessoa mais velha. IMPORTANTE: As informações deverão ser armazenadas em vetores com alocação dinâmica. 3) Faça um programa que crie uma estrutura contendo as seguintes informações: - Nome; - Telefone; - E-mail. Este programa deverá perguntar quantos contatos você deseja cadastrar e então solicitar as informações. IMPORTANTE: As informações deverão ser armazenadas em um vetor com alocação dinâmica. 4) Faça um programa em C que solicite uma quantidade de alunos e então, para cada aluno, solicite a nota e por fim calcule a média geral. 5) Continuando o exercício anterior, o programa deverá armazenar em um vetor dinâmico todas as notas acima da média, abaixo da média e igual a média. O programa deverá exibir aos usuários essas informações. 6) Criar um programa em C que apresente o seguinte menu ao usuário: "Digite: 1 para incluir uma nova nota, 2 para visualizar todas as notas e 3 para exibir a média geral". Quando for selecionada a opção 1 o sistema deverá aumentar dinamicamente o tamanho de um vetor para que seja possível inserir um novo valor. Quando for selecionada a opção 2 o sistema deverá exibir todas as notas informadas. Quando for selecionada a opção 3 o sistema deverá exibir a média dos valores informados.

7) Faça um programa em C que declare a estrutura "Livro". A estrutura será composta pelo Título do livro, escritor, número de páginas e ano de publicação. Este programa deverá conter um vetor dinâmico da estrutura livro. Os livros deverão ser inseridos pelo usuário um a um e sempre que for concluído o cadastro de um livro o sistema deve perguntar se o usuário deseja inserir um novo livro. Ao final o programa deve exibir o total de livros inseridos. 8) Para o programa anterior, além de exibir o total de livros inseridos o programa deverá agora exibir o(s) livro(s) mais antigo(s) (título e autor), o(s) livro(s) com o maior número de página. 10) Elaborar um programa em C que auxilie no controle de uma fazenda de gado. A quantidade de gados será determinada pelo usuário e por isso será armazenado em uma variável com alocação dinâmica. A base de dados é formada por um conjunto de estruturas (registros) contendo os seguintes campos referente a cada cabeça de gado: - Código: código da cabeça de gado, - Leite: número de litros de leite produzido por semana, - Alim: quantidade de alimento ingerida por semana - em quilos, - Abate: 'N' (não) ou 'S' (sim). a) Inserir novo gado. b) Devolver a quantidade total de leite produzida por semana na fazenda. c) Devolver a quantidade total de alimento consumido por semana na fazenda. d) Devolver número de cabeças de gado que iram para o abate. e) Sair do programa.