Programação em C

Programação em C/C++ Exercícios sobre CLASSES em C

++
1. Crie uma classe para representar uma pessoa, com os atributos privados de nome, idade e altura. Crie os métodos públicos necessários para sets e gets e também um métodos para imprimir os dados de uma pessoa.

2. Crie uma classe Agenda que armazena 10 pessoas e seja capaz de operações como: class Pessoa public: void armazenaPessoa(string nome, int idade, float altura); void removePessoa(string nome); int buscaPessoa(string nome); // informa em que posição da agenda está a pessoa void imprimePovo(); // imprime todos os dados de todas as pessoas da agenda void imprimePessoa(int i); // imprime os dados da pessoa que está na posição 'i' da agenda }; int main() { Agenda{ Povo[10];

Agenda A; // faça aqui o teste da agenda. } 3. Crie uma classe denominada Elevador para armazenar as informações de um elevador dentro de um prédio. A classe deve armazenar o andar atual (0=térreo), total de andares no prédio, excluindo o térreo, capacidade do elevador, e quantas pessoas estão presentes nele. A classe deve também disponibilizar os seguintes métodos:
y

y

y

y

y

y

inicializa: que deve receber como parâmetros: a capacidade do elevador e o total de andares no prédio (os elevadores sempre começam no térreo e vazios); entra: para acrescentar uma pessoa no elevador (só deve acrescentar se ainda houver espaço); sai: para remover uma pessoa do elevador (só deve remover se houver alguém dentro dele); sobe: para subir um andar (não deve subir se já estiver no último andar); desce: para descer um andar (não deve descer se já estiver no térreo); get....: métodos para obter cada um dos os dados armazenados.

4. Crie uma classe em C++ chamada Relogio para armazenar um horário, composto por hora, minuto e segundo. A classe deve representar esses componentes de horário e deve apresentar os métodos descritos a seguir:
y

y

y

um método chamado setHora, que deve receber o horário desejado por parâmetro (hora, minuto e segundo); um método chamado getHora para retornar o horário atual, através de 3 variáveis passadas por referência; um método para avançar o horário para o próximo segundo (lembre-se de atualizar o minuto e a hora, quando for o caso).

5. Definir uma classe que represente um círculo. Esta classe deve possuir métodos Privados para:
a. b. c.

calcular a área do círculo; calcular a distância entre os centros de 2 círculos; calcular a circunferência do círculo.

E métodos Públicos para:
a. b.

c. d. e. f.

definir o raio do círculo, dado um número real; aumentar o raio do círculo, dado um percentual de aumento; definir o centro do círculo, dada uma posição (X,Y); imprimir o valor do raio; imprimir o centro do círculo. imprimir a área do círculo.

Criar um programa principal para testar a classe.

6. Implemente uma televisão. A televisão tem um controle de volume do som e um controle de seleção de canal.
y

y

y

O controle de volume permite aumentar ou diminuir a potência do volume de som em uma unidade de cada vez. O controle de canal também permite aumentar e diminuir o número do canal em uma unidade, porém, também possibilita trocar para um canal indicado. Também devem existir métodos para consultar o valor do volume de som e o canal selecionado.

No programa principal, crie uma televisão e troque de canal algumas vezes. Aumente um pouco o volume, e exiba o valor de ambos os atributos.

7. Implemente um condicionador de ar. O condicionador possui 10 potências diferentes. Cada unidade da potência do condicionador diminui a temperatura do ambiente em 1.8oC. A variação que o condicionador consegue causar está no intervalo [0oC - 18oC], ou seja, zero graus de variação quando desligado e dezoito graus de variação quando ligado na potência máxima. Através de um sensor, o condicionador é informado da temperatura externa. Dada essa temperatura e a potência selecionada, o condicionador calcula e retorna a temperatura do ambiente. No programa principal, crie dois condicionadores. Informe duas temperaturas externas diferentes para cada um (ex: 25oC e 31o), ajuste o segundo em potência máxima (10) e

o primeiro em potência média (5). Finalmente, exiba a temperatura resultante de cada ambiente. 8. Implemente um carro. O tanque de combustível do carro armazena no máximo 50 litros de gasolina. O carro consome 15 km/litro. Deve ser possível:
y

y

y

Abastecer o carro com uma certa quantidade de gasolina; over o carro em uma determinada distância (medida em km); Retornar a quantidade de combustível e a distância total percorrida.

No programa principal, crie 2 carros. Abasteça 20 litros no primeiro e 30 litros no segundo. Desloque o primeiro em 200 km e o segundo em 400 km. Exiba na tela a distância percorrida e o total de combustível restante para cada um. 9. Definir uma classe que represente uma lista de inteiros. Esta classe deve armazenar os dados em um vetor de inteiros de tamanho 10. Deve existir um vetor auxiliar de que indique, na posição Vaux[i], qual o próximo elemento da lista após o elemento que está na posição 'i'. Na figura abaixo, considere que a lista inicia na posição 3. No vetor auxiliar, o valor -1 indica que a posição correspondente no vetor 'dados' está vazia. Por sua vez, o valor -2 indica que a posição correspondente no vetor 'dados' é o último elemento da lista.
Índice 0 1
2 3 4 5 6 7 8 9 10

Dados 0 1 Vetor Auxiliar(próxi 5 6 mo)

1

VAZI VAZI 1 3 VAZI VAZI VAZI VAZI 9 O O 1 4 O O O O -1 0 -1 1 2 -1 -1 -1 -1

Ao ser impressa, esta lista deve apresentar os seguintes valores: 9, 10, 11, 1, 34. A classe de deve ter métodos para:
y

Inserção: este método deve inserir um dado (int) na lista, após o último dado inserido. Este método deve retornar 1 quando conseguir inserir e 0 quando não houver mais espaço na lista. Internamente, a inserção deve ser feita no primeiro espaço livre do vetor de dados; Remoção: Remover um elemento da lista dado seu valor. Este método deve retornar 1 quando conseguir remover e 0 quando o dado não existir na lista; Impressão: Imprime os dados na lista na ordem que foram inseridos.

y

y

void ListaEncadeadaComVetor::imprimeLista() {
int pos = inicio; cout << "Lista: "; cout << "Inicio: " << pos << endl; for(int i=0; i< TAM; i++) { cout << Dados[pos] << "(" << pos << ")"; pos = Aux[pos]; if (pos == -2) break; else cout << ", "; }

cout << endl; }

Sugestão para definição da classe:
#include <iostream> using namespace std; const int TAM = 10; class ListaEncadeadaComVetor{ int inicio; int Dados[TAM]; int Aux[TAM]; int achaPosUltimo();// Este método faz a busca do último a partir dos // dados da lista e não a partir do vetor auxiliar int achaPosLivre(); // Este método faz a busca de um espaço lvre // a partir do vetor auxiliar public: ListaEncadeadaComVetor (); int insereDado(int D); int removeDado(int D); void imprimeLista(); };

10. Implemente um Veículo. O veículo é composto por várias partes: um motor, um tanque de combustível e 4 pneus. O funcionamento do veículo depende das suas partes, da seguinte forma:
y

Motor o Possui uma potência (em hp), uma taxa fixa de consumo (em km/litro) e um tanque de combustível (ver abaixo). o Possui um comando para avançar uma determinada quantidade de km. Se a pressão de

y

y

mais de um pneu (ver abaixo) estiver abaixo de 20 lb, o consumo do veículo aumenta em 30%. Se não houver combustível suficiente, o veículo avança até o tanque esvaziar. Tanque de Combustível o Possui uma determinada capacidade e quantidade atual de combustível (ambos em litros). o Pode ser abastecido com uma certa quantidade de combustível, limitado à sua capacidade máxima. Pneu o Cada pneu possui uma determina pressão (em lb). o Pode ser calibrado com determinada pressão informada (positiva ou negativa, sendo somada à atual).

Implemente as classes acima, usando composição quando necessário. Modularize o código e crie um Makefile para compilar o projeto (ou use o Code::Blocks). Lembre-se de implementar gets e sets necessários, bem como construtores adequados. No programa principal, faça as seguintes operações:
y

y y

y y

Instancie um veículo cujo motor tem 71 hp, consumo de 12 km/litro, tanque com capacidade para 50 litros, pneus dianteiros com 27 lb e traseiros com 23 lb. Abasteça o tanque com 30 litros. Exiba na tela as informações sobre cada componente do veículo. Avance 300 km. Reduza a pressão do pneu traseiro esquerdo para 17 lb.

y y y y

Avance 100 km. Reduza a pressão do pneu dianteiro direito para 18 lb. Abasteça mais 10 litros. Avance 200 km.

A cada operação de movimento, mostre na tela a distância percorrida e a quantidade de combustível restante.

FIM.

Sign up to vote on this title
UsefulNot useful