Você está na página 1de 2

Algoritmos e Estruturas de Dados 1 Lista de Exercícios 5

Professor Paulo Gomide

Parte Teórica

1. Explique o que são estruturas complexas heterogêneas ou estruturas compostas heterogêneas. Qual é a forma básica de utilização dessas estruturas em C?

2. Apresentando a sintaxe correta, explique como são declaradas estruturas complexas heterogêneas em C.

3. A utilização de structs é um artifício muito importante na linguagem C.

(a)

Descreva as características e a finalidade das structs.

(b)

Quais as vantagens de se usar structs em um programa?

4. É possível implementar um programa qualquer sem a utilização de nenhuma struct? Se a resposta for afirmativa, aponte então qual a importância da utilização de structs, especialmente em sistemas de grande porte?

Parte Prática

1. Existem diversas aplicações onde a manutenção de uma lista de itens é muito importante. Simulando uma aplicação que poderia ser utilizada em um estabelecimento comercial qualquer, implemente um programa que represente um vetor de produtos V que suporte até 100 produ- tos. Cada produto deve ser uma “struct” com os campos “codigo” (int), “descricao” (char [100]), “preco” (float) e “quantidade” (int). Para facilitar o processo de carregar um produto em uma variável do programa, implemente uma função chamada “carrega_produto” que leia os atribu- tos de um produto através da entrada padrão (tela) e retorne o produto. Similarmente, para facilitar o processo de imprimir os atributos de um produto na tela, implemente a função “im- prime_produto” que receba um produto como parâmetro e imprima os atributos do mesmo na saída padrão (tela). Declarado o vetor de produtos e implementadas as funções de leitura e escrita de produtos, solicite ao usuário através da entrada padrão (tela) que o mesmo digite um número inteiro 0 < N < 100, representando o número de produtos a serem armazenados nesse vetor. A seguir, solicite ao usuário que o mesmo digite código, descrição, preço e quantidade de cada um dos N produtos que, através da função “carrega_produto”, serão armazenados em V . Tendo ar- mazenado todos os produtos no vetor V , finalmente, mostre cada um deles na saída padrão (tela) utilizando a função “imprime_produto”. (8 pontos)

2. Existem diversas aplicações onde a manutenção de uma lista de itens é muito importante. Simulando uma aplicação que poderia ser utilizada em uma escola ou universidade qualquer, implemente um programa que represente um vetor de alunos V que suporte até 10000 alunos. Cada aluno deve ser uma struct chamada “Aluno” com os campos “nome” (char [100]), “matric- ula” (int), “notas” (float [3]) e “endereco” (struct Endereco). E para representar o endereço de um aluno deverá ser criada a struct “Endereco” com os campos “rua” (char [200]), “numero” (int), “cep” (long int) e “cidade” (char [100]). Para facilitar o cadastro de um aluno no sistema, im- plemente uma função chamada “cadastra_aluno” que deve solicitar todos os dados de um aluno através da entrada padrão (tela) e retornar uma “struct Aluno” com tais dados. E para facilitar a impressão dos atributos de um dado aluno, implemente uma função chamada “imprime_aluno” que receba como parâmetro uma variável do tipo “struct Aluno” e mostre todos os atributos da mesma na saída padrão (tela). Definidas as estruturas e implementadas as funções, declare o vetor de alunos V e solicite ao usuário que o mesmo digite um número inteiro 0 < N < 10000, rep- resentando o número de alunos a serem armazenados. A seguir, através de chamadas à função “cadastra_aluno” permita que o usuário cadastre os N alunos. E uma vez cadastrados, mostre os atributos dos N alunos na tela através de chamadas à função “imprime_aluno”.

Bons estudos! ;-)