Logo Passei Direto
Buscar

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

UNIVERSIDADE FEDERAL DE MINAS GERAIS
Departamento de Ciência da Computação
Disciplina Curso Turno Período
Algoritmos e Estruturas de Dados II Engenharia Elética et ali Matutino 1◦
Professores
Camillo J. S. Oliveira
Tipos Abstratos de Dados
1. Um ponto no espaço R2 pode ser representado por um par de números pertencentes ao conjunto dos
números reais e que formam um par ordenado (x, y). Defina o tipo PONTO e as seguintes operações:
Inicializar o conteúdo do ponto por intermédio da função
void InicializarPonto(PONTO *P, double x, double y);
que recebe como parâmetro o endereço de um tipo PONTO e dois números reais (tipo double)
referentes as ordenadas x e y. A função não retorna nenhum valor.
Mostrar o conteúdo do ponto por intermédio da função
void MostrarPonto(PONTO P);
que recebe como parâmetro um tipo PONTO e mostra o conteúdo deste ponto na saída padrão.
A função não retorna nenhum valor.
Atualizar conteúdo do ponto por intermédio da função
void AtualizarPonto(PONTO *P, double x, double y);
que recebe como parâmetro o endereço de um tipo PONTO e os valores das ordenadas x e y. A
função não retorna nenhum valor.
Atualizar a ordenada x do ponto por intermédio da função
void AtualizarXPonto(PONTO *P, double x);
que recebe como parâmetro o endereço de um tipo PONTO e o valor da ordenada x. A função
não retorna nenhum valor.
Atualizar a ordenada y do ponto por intermédio da função
void AtualizarYPonto(PONTO *P, double y);
que recebe como parâmetro o endereço de um tipo PONTO e o valor da ordenada y. A função
não retorna nenhum valor.
Apanhar o valor da ordenada x do ponto por intermédio da função
double XPonto(PONTO P);
que recebe como parâmetro um tipo PONTO e retorna o valor da ordenada x.
Apanhar o valor da ordenada y do ponto por intermédio da função
double YPonto(PONTO P);
que recebe como parâmetro um tipo PONTO e retorna o valor da ordenada y.
Definir o tipo PONTO, criar o arquivo ponto.h que conterá a definição do tipo PONTO e os respectivos
protótipos (cabeçalhos) da funções responsáveis pelas operações a serem realizadas com o tipo PONTO,
criar o programa ponto.cpp que terá o código fonte das funções responsáveis pela operações a serem
realizada com o tipo PONTO e o programa principal-ponto.cpp que terá a visão do usuário na
utilização do tipo PONTO.
2. Uma reta representada no espaço R2 pode ser definida por dois pontos. Definir o tipo RETA em
função do tipo PONTO e nos moldes do que foi definido para o tipo PONTO implemente as seguintes
operações para o tipo RETA:
Inicializar o conteúdo da reta por intermédio da função
void InicializarReta(RETA *R, PONTO P, double m);
Atualizar o conteúdo da reta por intermédio da função
void AtualizarReta(RETA *R, PONTO P, double m);
Atualizar o conteúdo do ponto da reta por intermédio da função
void AtualizarPontoReta(RETA *R, PONTO P);
Atualizar o coeficiente angular da reta por intermédio da função
void AtualizarCoeficienteAngularReta(RETA *R, double m);
Mostrar o conteúdo da reta por intermédio da função
void MostrarReta(RETA R);
Retornar o conteúdo do ponto da reta por intermédio da função
PONTO RetornarPontoReta(RETA R);
Retornar o valor do coeficiente angular da reta por intermédio da função
double RetornarCoeficienteAngularReta(RETA R);
Definir o tipo RETA, criar o arquivo reta.h que conterá a definição do tipo RETA e os respectivos
protótipos (cabeçalhos) da funções responsáveis pela operações a serem realizadas no tipo RETA, criar
o programa reta.cpp que terá o código fonte das funções responsáveis pela operações a serem realizada
no tipo RETA e o programa principal-reta.cpp que terá a visão do usuário na utilização do tipo
RETA.
3. Com base nos exercícios 1 e 2, seguindo as mesmas linhas de raciocínio definir e implementar as
OPERAÇÕES pertinentes para os tipos que seguem:
• CÍRCULO definido por um ponto e o comprimento do raio.
• TRIÂNGULO_1 definido por um conjunto de três pontos.
• TRIÂNGULO_2 definido por três pontos.
• PONTO_R3 no espaço R3 representado por uma trinca de números pertencentes ao conjunto dos
números reais e que formam uma trinca ordenada (x, y, z).
• Um cubo pode ser definido por oito pontos em R3 e também pode ser definido por um conjunto
de oito pontos. Definir CUBO_1 e CUBO_2 respectivamente em função do TIPO PONTO_R3.
Declarar duas variáveis do tipo CUBO_1 e CUBO_2 respectivamente e incialize-os com os
seguintes valores dos vértices: (0, 0, 0), (4, 0, 0), (4, 4, 0), (0, 4, 0), (0, 0, 4), (4, 0, 0), (4, 4, 4), (0, 4, 4)
• PLANO pode ser definido por uma RETA e um PONTO desde que este ponto não pertença a
esta reta. Definir o tipo PLANO em função dos tipos RETA e PONTO.
• Declare uma variável do tipo PLANO e atribua valores para este plano.
• Declare um conjunto de sete PLANOS e atribua valores para o quinto plano.
• Uma data pode ser definida por três números inteiros que representam o dia (1, . . . , 31), mês
(1, . . . , 12) e ano (um número de quatro algarismos). Defina o tipo de dado DATA. Utilize o
menor tipo de dado possível de modo que caiba a faixa numérica do intervalo.
• Defina o tipo PERÍODO que possui os campos do tipo DATA referente a inicio e fim.
• Defina o tipo CEP que se refere ao código de endereçamento postal e possui os campos prefixo
(5 caracteres) e digito (3 caracteres).
• Um endereço residencial pode ser definido por intermédio do nome da rua (36 bytes), o bairro (26
bytes), a cidade (30 bytes), a sigla da federação (UF) (2 bytes), o código de endereçamento postal
(CEP) (8 bytes). Defina o tipo ENDERECO.
• Defina o tipo CPF que possui os campos numero (9 caracteres) e digito (2 caracteres).
• Um telefone pode ser definido por três tipos de informações: o código de discagem à distância
(ddd) (2 caracteres), o prefixo da área (prefixo) (4 caracteres) e o número restante (numero) (4
caracteres). Defina o tipo FONE.
• O tipo CLIENTE pode ser identificado pelo nome (64 caracteres), o número do registro geral (rg)
(8 caracteres), data de nascimento, endereço e fone. Defina o tipo CLIENTE utilizando quando
SEMPRE que puder os tipos anteriores já definidos.
• Declare um conjunto de 20 clientes do tipo CLIENTE.
• Uma apólice de seguro de vida pode ser formada pelo número da apólice (10 caracteres), cliente,
endereço, valor em reais da apólice, prêmio (%), nome do beneficiário (64 caracteres) data da
apólice e data de aniversário. Defina o APOLICE_VIDA.
• Uma apólice de seguro de automóvel pode ser composta pelo número da apólice (10 caracteres),
cliente, endereço, valor em reais da apólice, prêmio (%), depreciação (%), licença (10 caracteres),
unidade da federação, modelo (15 caracteres), data da apólice e ano de fabricação. Defina o tipo
APOLICE_AUTOMOVEL.
• Uma apólice de seguro de imóvel pode ser formada pelo número da apólice (10 caracteres), cliente,
endereço, valor em reais da apólice, premio (%), depreciação (%), licença (10 caracteres), data da
apólice e ano de construção. Defina o tipo APOLICE_IMOVEL.
SUGESTÃO: por tudo em um único diretório que terá os respectivos arquivo de cabeçalhos (.h), os respec-
tivos códigos da operações (.cpp) e os respectivos códigos fontes dos arquivos que possuem a função main
(.cpp). A medida que os tipos definidos possam ser necessários, é só utiliza-los. Procure criar um projeto
para cada um dos tipos solicitados. Exemplos de arquivos seriam: circulo.h, circulo.cpp, principal-circulo.cpp
e circulo.prj.

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?