MC102

Algoritmos e Programação de Computadores

Sexta Lista de Exercícios

Os exercícios dessa lista cobrem as aulas até o dia 22/05.
  1. O cadastro de produtos de uma loja deve conter: nome (string[40]), preço (real), estoque (integer). Defina um registro para conter uma lista duplamente encadeada de produtos. Faça funções/procedimentos para:
    • Incluir um novo produto de forma ordenada por nome;
    • Remover um produdo dado o nome dele;
    • Mostrar na tela todos os produtos que estão em falta (estoque = 0);
    Faça um programa que utilize essas funções/procedimentos para criar um cadastro de produtos e mostrar os resultados da pesquisa de produtos em falta.
  2. Defina um registro com os dados de um aluno para uma disciplina (RA, nome, faltas e nota final). Incremente o registro com os campos necessários para fazer uma lista duplamente encadeada ordenada por RAs. Aumente seu código para compartilhar os dados do aluno em duas listas (sem duplicar os dados), uma ordenada por RA e outra por nome. Faça procedimentos/funções para incluir, remover e listar os elementos da lista nas duas ordens possíveis. A lista deve ser mantida simultaneamente ordenada tanto por RA e nome.
  3. Ponteiros são muito úteis para organizar estruturas de dados cujo tamanho não é definido antecipadamente. Na segunda prova da disciplina, foram definidas estruturas de dados para famílias. Redefina esta estrutura para utilizar ponteiros na hora de armazenar as informações dos filhos. Faça um programa exemplo de como utilizar suas funções e procedimentos.
  4. Um outro exemplo interessante de uso de ponteiros está em definir uma estrutura de dados e facilitar métodos de acesso aos elementos. Para simplificar as funções de inserção e remoção, é comum utilizar um nó cabeçalho nas listas de forma que elas nunca fiquem vazias. Modifique as definições dos exercícios anteriores para que eles incluam um nó cabeçalho. Mostre como as funções de inserção e remoção ficam menores desta forma. Não se esqueça de ignorar o nó cabeçalho quando for imprimir sua lista.
  5. Implemente uma lista de inteiros para substituir um vetor. A lista não será ordenada. Defina funções/procedimentos para incluir elementos na lista (no início, no meio e no final), remover um elemento, contar o número de elementos da lista e mostrar todos os elementos na tela. Faça também um procedimento que receba como parâmetro uma lista e um procedimento e chame o procedimento com cada um dos elementos da lista como parâmetro. Mostre que com este último procedimento você pode implementar facilmente um procedimento para imprimir a lista inteira.
  6. Para a estrutura do exercício 1, faça um programa que:
    • Leia os dados de um arquivo binário
    • Permita que o usuário acrescente novos elementos
    • Permita que o usuário remova alguns elementos
    • Grave os dados de volta no arquivo binário
    • Mostre qual o tamanho do arquivo e também quantos elementos ele possui
  7. Faça um programa similar ao do exercício 6 para a estrutura do exercício 2