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.