Baixe o app para aproveitar ainda mais
Prévia do material em texto
UNIVERSIDADE FEDERAL RURAL DE PERNAMBUCO Departamento de Estatística e Informática (DEINFO) Disciplina: Introdução à Programação I Prof: Lucas Albertins Lista de Exercícios 4 Estruturas, Alocação Dinâmica de Memória e Arquivos 1 – Suponha uma seleção de vestibular que terá vagas específicas para um sistema de cotas caso o candidato tenha estudado em escola pública. As cotas se dividem de acordo com a renda mensal da família do candidato e de acordo com a sua raça, caso ele seja preto, pardo ou indígena (PPI) ou outra raça. De acordo com essas categorias podemos ter 4 tipos de cota com as seguintes quantidades de vagas: • Renda inferior a 1.5 salário mínimo e raça PPI – 3 vagas; • Renda inferior a 1.5 salário mínimo e raça diferente de PPI – 2 vagas; • Renda superior a 1.5 salário mínimo e raça PPI – 2 vagas; • Renda superior a 1.5 salário mínimo e raça diferente de PPI – 1 vaga. Caso o candidato não seja cotista ele competirá pelas vagas universais as quais são 5 vagas. a) Faça um programa utilizando vetores e estruturas que leia as informações de 20 candidatos (nome, nota e categoria) e informe a classificação de cada categoria de acordo as notas em ordem decrescente; b) Altere o programa anterior para contemplar a seguinte regra: caso sobre vagas em alguma categoria a mesma deve ser preenchida com os candidatos melhor classificados que não entraram nas vagas da sua categoria seguindo a seguinte ordem de prioridade a. Renda inferior a 1.5 salário mínimo e raça PPI; b. Renda inferior a 1.5 salário mínimo e raça diferente de PPI; c. Renda superior a 1.5 salário mínimo e raça PPI; d. Renda superior a 1.5 salário mínimo e raça diferente de PPI. e. Vagas universais. c) Altere o programa anterior para ao invés de vetores, utilizar listas encadeadas “sem limites” (memória do computador). 2 -‐ Utilizando alocação dinâmica de memória, escreva um subprograma em C para efetuar cada uma das seguintes operações em listas encadeadas: 1.1. Acrescentar um elemento ao final de uma lista encadeada; 1.2. Concatenar duas listas encadeadas; 1.3. Liberar todos os nodos em uma lista; 1.4. Inverter uma lista encadeada simples, de forma que o último elemento se torna o primeiro, e etc.; 1.5. Inverter uma lista duplamente encadeada, de forma que o último elemento se torna o primeiro, e etc.; 1.6. Remover o último elemento de uma lista; UNIVERSIDADE FEDERAL RURAL DE PERNAMBUCO Departamento de Estatística e Informática (DEINFO) Disciplina: Introdução à Programação I Prof: Lucas Albertins 1.7. Remover o n-‐ésimo elemento de uma lista; 1.8. Remover o penúltimo elemento de uma lista; 1.9. Combinar duas listas encadeadas simples, ordenadas pelo campo de informação, em uma única lista ordenada; 1.10. Formar uma lista contendo a união de duas listas; 1.11. Formar uma lista contendo a interseção de duas listas; 1.12. Inserir um elemento depois do n-‐ésimo elemento de uma lista; 1.13. Remover cada segundo elemento de uma lista; 1.14. Colocar os elementos de uma lista em ordem crescente; 1.15. Retornar a soma dos inteiros em uma lista; 1.16. Retornar o número de elementos em uma lista; 1.17. Mover Nodo(p) n posições para a frente em uma lista; 1.18. Fazer uma cópia de uma lista. 3 -‐ Por questões de segurança, a recepção de um edifício de um banco mantém o registro de todas as pessoas que entram e saem do mesmo. Sobre cada pessoa são armazenadas as seguintes informações: • Nome • Hora entrada Elabore um programa que permita gerir a informação das entradas sobre a forma duma lista ligada. Sempre que alguém entra, os seus dados são adicionados à lista. Sempre que alguém sai seus dados são apagados. Deve ser possível listar as pessoas que se encontram no edifício. Para aumentar o nível de segurança sempre que alguém sai do edifício é registrado num arquivo texto o seu nome, hora de entrada e hora de saída. Este arquivo de texto deverá ter como nome a data a que diz respeito.
Compartilhar