Kimossab

[POO] Frequencia 2017

Jan 21st, 2018
530
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.17 KB | None | 0 0
  1. //Frequencia 11.01.2017
  2. //nao garanto que esteja tudo certo
  3. //I
  4. //1 - Existem erros. Cliente *Cli[10] é um array de 10 indices, para cada um dos indices é necessário fazer o new Cliente, por que senão vai dar erro por tentar chamar Mostrar em coisas nao incializadas
  5. //2 - Existem erros. O array nao é dinamico logo nao se pode fazer o delete do array Cli
  6. //3 - Tem erros. O M1 é private no Cliente logo não é acessivel
  7. //4 - "P". A variavel é do tipo Pessoa logo chama o M1 da Pessoa, como tem reticencias assume-se que tem lá o "public :". Não é virtual logo não chama o M1 do Cliente. Resultado executa o M1 da Pessoa.
  8. //5 - Erros. o X é do tipo pessoa logo tenta chamar o M2 na Pessoa, que não existe, logo dá erro
  9. //6 - Resultado imprevisto. O "delete this;" não é válido na execuçao, mas é compilado. Crasha o programa.
  10. //7 - "Pedro Joao".
  11. //8 - Erros. X->nome vai dar erro, porque nome é private e nao public.
  12. //9 - Erros. A segunda linha precisa de um ponteiro.
  13. //10 - Erros de compilacao. Pessoa("Zezito") por si só nao é um ponteiro, falta o new.
  14.  
  15. //II
  16. //1
  17. // diagrama de classes (FUCK YOU VS 2017): https://imgur.com/hGDgxe4
  18. //2
  19. //a)
  20. void Gestor::Inserir(Alojamento *aloj)
  21. {
  22.     listaAlojamentos.push_back(aloj);
  23. }
  24. //b) Sinceramente não sei o que ele quer. Se é para remover todos porque está a passar um apartamento apenas como parametro de entrada? nao faz sentido por isso vou fazer o codigo para remover todos os apartamentos cagando para o parametro de entrada ¯\_(ツ)_/¯
  25. //o enunciado nao faz sentido por isso vou fazer como acho que deveria de ser, perguntem ao prof que eu nao faço a minima
  26.  
  27. void Gestor::RemoverApartamentos()
  28. {
  29.     listaAlojamentos.remove_if([](Alojamento *value)
  30.     {
  31.         value->tipo().compare("apartamento") == 0;
  32.     });
  33. }
  34. //c)
  35. string Gestor::DeterminarAlojamentosMaiorNumero()
  36. {
  37.     int lojas = 0;
  38.     int apartamentos = 0;
  39.  
  40.     list<Alojamento *>::iterator it = listaAlojamentos.begin();
  41.     for(; it != listaAlojamentos.end(); ++it)
  42.     {
  43.         if((*it)->tipo().compare("apartamento") == 0)
  44.             apartamentos++;
  45.         else
  46.             lojas++;
  47.     }
  48.  
  49.     if(lojas == apartamentos)
  50.         return "Iguais";
  51.     if(lojas > apartamentos)
  52.         return "Lojas";
  53.     return "Apartamentos";
  54. }
  55. //d) mais uma que nao faz sentido. Uma compra precisa de preco e data, será que é para pedir ao utilizador ou será que falta nos parametros de entrada? Mais uma questao para o prof
  56. void Gestor::AddCompra(Cliente *cli, Alojamento *aloj, float preco=0, string data="")
  57. {
  58.     listaVendas.push_back(new Venda(cli, aloj, preco, data));
  59. }
  60. //e)
  61. int Gestor::ContarAlojamentos(Cliente *cli)
  62. {
  63.     int qtt = 0;
  64.  
  65.     list<Venda *>::iterator it = listaVendas.begin();
  66.     for(; it != listaVendas.end(); ++it)
  67.     {
  68.         if((*it)->GetCliente() == cli)
  69.             qtt++;
  70.     }
  71.     return qtt;
  72. }
  73. //f)
  74. int Gestor::ContarDisponiveis()
  75. {
  76.     int qtt = 0;
  77.  
  78.     list<Alojamento *>::iterator it = listaAlojamentos.begin();
  79.     for(; it != listaAlojamentos.end(); ++it)
  80.     {
  81.         bool found = false;
  82.         list<Venda *>::iterator itV = listaVendas.begin();
  83.         for(; itV != listaVendas.end(); ++itV)
  84.         {
  85.             if((*itV)->GetAlojamento() == (*it))
  86.             {
  87.                 found = true;
  88.                 break;
  89.             }
  90.         }
  91.         if(!found)
  92.             qtt++;
  93.     }
  94.     return qtt;
  95. }
Advertisement
Add Comment
Please, Sign In to add comment