Escolar Documentos
Profissional Documentos
Cultura Documentos
Aluna: Maria Katharine Ferreira do Amaral Matrcula: 1210756 Disciplina: Tpicos de Linguagem Professor: Herleson Pontes
1) Na geometria, uma das figuras mais conhecidas o retngulo: figura com quatro lados onde suas arestas geram um ngulo de 90 entre elas.
Um retngulo ABCD possui as propriedades base e altura. A rea de um retngulo obtida atravs do produto entre sua base e a altura. J o clculo do permetro consiste em somar duas vezes o valor da base com duas vezes o valor da altura. Outro clculo possvel em um retngulo o clculo da diagonal AC, que consiste no clculo da hipotenusa do tringulo retngulo gerado. A frmula, baseada no teorema de Pitgoras, segue a seguinte relao: c = a + b, onde c a hipotenusa do tringulo, e a e b so os catetos (lados) desse tringulo. Existe um caso especial de retngulo, conhecido como quadrado. Um quadrado possui como propriedade a de que sua base e altura serem iguais. Baseado nessas informaes, crie um programa orientado a objetos com as classes retngulo e quadrado com todas as suas propriedades (atributos) e clculos (mtodos). Todas as classes devem estar encapsuladas, possuir construtores, modificadores e assessores, alm de utilizar os fundamentos da orientao a objetos quando necessrio. (2,0 Pontos) #include <cstdlib> #include <iostream> #include <stdio.h> #include <math.h>
class Retangulo { public: double altura,base; Retangulo(double a, double b){ altura = a; base = b; }
double calcularArea(){ float area; area = base*altura; return area; } double calcularPerimetro(){ float perimetro; perimetro = (2*base)+(2*altura); return perimetro; }
double calcularDiagonal(){ float diagonal; diagonal = pow(base,2); diagonal = diagonal + pow(altura,2); diagonal = sqrt(diagonal); return diagonal; } }; class Quadrado { public: double lado; Quadrado(double a){ lado = a; } double calcularArea(){ return pow(lado,2); } double calcularPerimetro(){ float perimetro; perimetro = 4*lado;
return perimetro; } double calcularDiagonal(){ float diagonal; diagonal = lado*(sqrt(2)); return diagonal; } };
int main(int argc, char *argv[]) { Retangulo a (5,8); Quadrado b (4); printf("Retangulo\n"); printf("Area = %d Perimetro = %d Diagonal = %d\n\n",a.calcularArea(),a.calcularPerimetro(),a.calcularDiagonal()); printf("\n\nQuadrado\n"); printf("Area = %d Perimetro = %d Diagonal = %d\n\n",b.calcularArea(),b.calcularPerimetro(),b.calcularDiagonal()); system("PAUSE"); return EXIT_SUCCESS; }
2) Um tipo de sistema que se tornou padro nos aeroportos o de controle de Check-in de passageiros. Este sistema permite aos passageiros comprar passagens, consultar o histrico de voos realizados e realizar o check-in. Cada voo possui a cidade de destino, a data do voo, o horrio de sada, o horrio de chegada, o tempo de voo e os passageiros, com seus respectivos status de check-in (reservado, realizado, cancelado), que esto nesse voo. Cada passageiro possui seu CPF, nome e telefone. Alm disso, o sistema armazena uma lista de voos, onde so guardados os voos reservados, os voos j realizados e os voos cancelados. O processo de comprar uma passagem inicia-se com a consulta aos vos disponveis. Para esta consulta, o passageiro informa a cidade de origem, a cidade de destino e a data desejada. Essa consulta ento retorna a lista de voos disponveis que atende aos critrios da consulta. O passageiro ento inicia o processo de reserva, adicionando o passageiro ao voo e exibindo uma mensagem de confirmao da reserva ao usurio. J o processo de check-in comea com a entrada do CPF do passageiro. O sistema ento verifica nos voos do dia o passageiro informado. Uma vez encontrado, o passageiro ento confirma o seu check-in,
alterando o status da sua reserva de reservado para realizado, e informa ao usurio que o check-in foi realizado com sucesso. Para garantir a fidelizao dos seus clientes, o sistema possui um grupo de passageiros Especiais, os quais acumulam 1000 pontos a cada check-in realizado. O passageiro pode consultar o total de milhas acumuladas a qualquer momento. Outro processo existente neste sistema a consulta de histrico de voo do passageiro, onde o sistema trs os dados do passageiro e o seu histrico de voos. Baseado no cenrio descrito acima realize as atividades a seguir: a) Desenvolva o Diagrama de Classes da soluo apresentada, com todos os atributos, mtodos e relacionamentos. (3,0 pontos)
b) Implemente o cdigo do sistema proposto acima, utilizando todos os conceitos e boas prticas da Orientao a Objetos.(5,0 Pontos) #include <cstdlib> #include <iostream> #include <string.h>
class Passageiro {
public: Passageiro(){} Passageiro (char* a, int b, int c,int d){ strcpy(nome, a); telefone = b; CPF = c; milhas = d; }
telefone = b; }
void imprimirDados (){ printf("Nome %s\n",nome); printf("Telefone %d\n",telefone); printf("CPF %d\n",CPF); printf("Milhas %d\n",milhas); }
class Voo {
private: char origem[20]; char destino[20]; int horaSaida; int minutosSaida; int horaChegada; int minutoChegada; int horasVoo; int minutosVoo; int diaVoo; int mesVoo; int anoVoo; char status[10]; //1 = realizado 2 = reservado 3 = cancelado
public: Voo(){} Voo (char* a, char* b, int c,int d, int e,int f, int g, int h, int i){ //construtor de Voo strcpy(origem, a); strcpy(destino, b); horaSaida = c;
minutosSaida = d; horaChegada = e; minutoChegada = f; horasVoo = e-c; minutosVoo = f-d; diaVoo = g; mesVoo = h; anoVoo = i; strcpy(status, "CANCELADO"); }
void setStatus(int a){ //1 = realizado 2 = reservado 3 = cancelado if(a == 1){ strcpy(status,"REALIZADO"); }else{ if (a==2){ strcpy(status,"RESERVADO"); }else{
strcpy(status,"CANCELADO"); } }
return horasVoo; }
void consultarVoo (){ printf("\nOrigem %s\n",origem,destino); printf("Destino %s\n",destino); printf("Saida %d %d\n",horaSaida,minutosSaida); printf("Chegada %d %d\n",horaChegada,minutoChegada); printf("Tempo de Voo %dh e %dmin\n",horasVoo,minutosVoo); printf("Data %d/%d/%d \n",diaVoo,mesVoo,anoVoo); printf("Status = %s\n\n\n\n",status);
bool comprarPassagem(Passageiro cliente){ consultarVoo(); int com; printf("\nDeseja comprar?\n"); printf("SIM = 1 scanf("%d",&com); if(com==1){ strcpy(status, "RESERVADO"); return true; }else{ strcpy(status, "CANCELADO"); return false; } } }; //fim classe Voo ! NAO = 0\n");
bool fazerCheckin(int cpf){ //1 = realizado 2 = reservado 3 = cancelado int check; char aux[10];
scanf("%d",&check);
if(check==0){ printf("\nNao foi feito o Check-in no Voo!\n\n\n\n"); printf("Deseja cancelar a reserva \n"); printf("1 - SIM int aux; scanf("%d",&aux); if(aux==1){ vooo.setStatus(3); } if(aux==2){ vooo.setStatus(2); } return false; 2 - NAO\n");
printf("BEM VINDO !!\n\n"); printf("Kath's airport \n"); Passageiro a("Katharine",32764224,123,0); Voo v ("Fortaleza","Rio de Janeiro",19,0,21,0,8,12,2012); CheckIn check (v,a);
while(opcao!=7){ printf("MENU\n\n"); printf("Consultar voos : 1\n"); printf("Comprar passagem: 2\n"); printf("Fazer Check-in: 3\n"); printf("Consultar historico de voos: 4\n"); printf("Consultar milhas: 5\n"); printf("Verificar dados passageiro: 6\n"); printf("SAIR: 7\n"); scanf("%d",&opcao);
printf("Informe seu CPF\n"); scanf("%d",cpf); if(check.fazerCheckin(cpf)){ //s + 1000 se passageiro especial int mil; mil = a.getMilhas(); mil = mil + 1000; a.setMilhas(mil); } break; }
case 4: //consultar historico voos printf("\nOrigem %s\nDestino: %s\n",v.getOrigem(),v.getDestino()); printf("Saida %d %d\n",v.getHoraSaida(),v.getMinutosSaida()); printf("Chegada %d %d\n",v.getHoraChegada(),v.getMinutoChegada()); printf("Tempo de Voo %dh e %d min\n",v.getHorasVoo(),v.getMinutosVoo()); printf("Data %d/%d/%d\n",v.getDiaVoo(),v.getMesVoo(),v.getAnoVoo()); printf("Status %s\n\n\n\n",v.getStatus()); break;