Buscar

Lista de exercícios 1

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Universidade Federal de Itajuba´
Campus Itabira
Lista de exerc´ıcios 1
Teste 1, dia 05/09/2013
Obs.: Em todos os Tipos Abstrato de Dados (TAD), considere dados privados e operac¸o˜es pu´blicas.
(1) Considere o TAD Ponto composto por uma tupla (x, y) ∈ R2. O TAD tambe´m sera´ composto
por operac¸o˜es para atribuir e obter valores dos pontos (gets e sets) ale´m das operac¸o˜es:
• distancia: recebe um Ponto como parmˆetro e retorna a distaˆncia entre os dois;
• colineares: recebe dois Pontos como paraˆmetros e retorna verdadeiro se os treˆs pontos sa˜o
colineares ou falso caso contra´rio.
Implemente o TAD Ponto e um int main() para testar suas operac¸o˜es.
(2) Considere o TAD Triangulo composto de treˆs Pontos (definidos no exercicio 1) que represen-
tam seus ve´rtices. Ale´m disto, as seguintes operac¸o˜es sa˜o definidas:
• Construtor: recebe como parmˆetros 6 valores para definir um Triangulo. Caso os valores
passados na˜o possam formar um Triangulo, uma mensagem deve ser informada e todos os
pontos assumirem valor na origem (0, 0);
• perimetro: retorna o per´ımetro do Triangulo;
• validar: recebe 3 pontos e retorna verdadeiro se eles podem formar um Triangulo ou falso,
caso contra´rio.
Implemente o TAD Triangulo, considerando que sera˜o usados ponteiros para armazenar cada um
de seus Pontos (utilizar alocac¸a˜o dinaˆmica de memo´ria). Implemente tambe´m e um int main()
para testar as operac¸o˜es do TAD.
(3) Considere o TAD Circulo composto de um Ponto que define o seu centro e um valor r ∈ R
que define o seu raio. As seguintes operac¸o˜es sa˜o definidas para o TAD:
• Construtor: recebe como parmˆetros 3 valores: os dois primeiros referentes ao centro e o
u´ltimo para o raio (caso seja negativo, uma mensagem deve ser informada);
• perimetro: retorna o per´ımetro do Circulo;
• area: retorna a a´rea do Circulo;
• pontoDentro: recebe um Ponto como paraˆmetro e retorna verdadeiro caso o Ponto esteja
dentro do Circulo ou falso, caso contra´rio;
• intersepta: recebe um Circulo como paraˆmetro e retorna verdadeiro caso exista intersec¸a˜o
entre as circunfereˆncias dos Circulos ou falso, caso contra´rio.
Implemente o TAD Circulo e um int main() para testar suas operac¸o˜es.
(4) Considere o TAD Fracao que armazena dois valores n, d ∈ N que representam o numerador e
o denominador de uma frac¸a˜o. As operac¸o˜es deste TAD sa˜o:
• Construtor: recebe como paraˆmetros 2 valores: numerador e denominador da frac¸a˜o. Se
denominador for 0, uma mensagem deve ser enviada e o denominador alterado para 1
• valorReal: retorna o valor real da Fracao;
• soma: recebe como paraˆmetro uma Fracao e realiza a soma, retornando outra Fracao;
• multiplica: recebe uma Fracao e realiza a multiplicac¸a˜o, retornando outra Fracao;
• intersepta: recebe um Circulo como paraˆmetro e retorna verdadeiro caso exista intersec¸a˜o
entre as circunfereˆncias dos Circulos ou falso, caso contra´rio.
Implemente o TAD Fracao e um int main() para testar suas operac¸o˜es.
(5) Considere o TAD Pessoa que armazene como dados o nome, o ano de nascimento e o sexo de
uma pessoa. As seguintes operac¸o˜es sa˜o definidas para o TAD:
• atribuirNome: recebe uma cadeia de caracteres como paraˆmetro e atribui ao nome da
Pessoa;
• atribuirAno: recebe um valor inteiro e, caso seja va´lido, atribui a` Pessoa e retorna ver-
dadeiro. Caso contra´rio, retorna falso;
• atribuirSexo: recebe um caractere e, caso seja va´lido, atribui a` Pessoa e retorna verdadeiro.
Caso contra´rio, retorna falso;
• diferencaIdade: retorna um valor inteiro que determina a diferenc¸a de idade entre as duas
pessoas;
• Construtor: recebe 3 parametros ( um p/ cada membro) caso ao valor de algum dos
parametros seja inva´lido, uma mensagem deve ser exibida
Implemente o TAD Pessoa e um int main() para testar suas operac¸o˜es.
(6) Em estat´ıstica, entende-se por moda aquele valor que aparece com mais frequeˆncia em uma
amostra. Fac¸a um programa onde o usua´rio digite uma quantidade qualquer de valores inteiros
maiores que zero (ao digitar um valor negativo, o programa termina a coleta de valores) e enta˜o
calcule a moda da amostra. O seu programa deve adotar uma pol´ıtica de alocac¸a˜o/desalocac¸a˜o
dinaˆmica de memo´ria que minimize o desperd´ıcio (no ma´ximo 10 ce´lulas podem ser alocadas e nao
utilizadas).
(7) Suponha que A ⊂ Z e B ⊂ Z sejam conjuntos de nu´meros inteiros na˜o nulos de qualquer
cardinalidade. Implemente func¸o˜es em C++ para calcular
A ∩ B A ∪B A \B.
Cada func¸a˜o devera´ receber um vetor de inteiros para representar A e B (alocados dinamicamente)
e retornar um vetor de inteiros contendo o resultado da operac¸a˜o. O vetor resultante na˜o deve
conter elementos repetidos e seu tamanho deve ser exatamente o necessa´rio para armazenar o
resultado da operac¸a˜o. Em cada um dos vetores, use a primeira ce´lula para determinar quantos
elementos existem no vetor (a partir da ce´lula 1). Implemente uma func¸a˜o int main() para realizar
os testes.

Continue navegando