Correção dos 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. Lembrando... 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> #include <stdlib.h> int main(void) { 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); return 0; } Ou ainda…. #include <stdio.h> #include <stdlib.h> int main(void) { 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); return 0; } 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> #include <stdlib.h> int main(void) { 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); return 0; }