Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Frequencia 11.01.2017
- //nao garanto que esteja tudo certo
- //I
- //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
- //2 - Existem erros. O array nao é dinamico logo nao se pode fazer o delete do array Cli
- //3 - Tem erros. O M1 é private no Cliente logo não é acessivel
- //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.
- //5 - Erros. o X é do tipo pessoa logo tenta chamar o M2 na Pessoa, que não existe, logo dá erro
- //6 - Resultado imprevisto. O "delete this;" não é válido na execuçao, mas é compilado. Crasha o programa.
- //7 - "Pedro Joao".
- //8 - Erros. X->nome vai dar erro, porque nome é private e nao public.
- //9 - Erros. A segunda linha precisa de um ponteiro.
- //10 - Erros de compilacao. Pessoa("Zezito") por si só nao é um ponteiro, falta o new.
- //II
- //1
- // diagrama de classes (FUCK YOU VS 2017): https://imgur.com/hGDgxe4
- //2
- //a)
- void Gestor::Inserir(Alojamento *aloj)
- {
- listaAlojamentos.push_back(aloj);
- }
- //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 ¯\_(ツ)_/¯
- //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
- void Gestor::RemoverApartamentos()
- {
- listaAlojamentos.remove_if([](Alojamento *value)
- {
- value->tipo().compare("apartamento") == 0;
- });
- }
- //c)
- string Gestor::DeterminarAlojamentosMaiorNumero()
- {
- int lojas = 0;
- int apartamentos = 0;
- list<Alojamento *>::iterator it = listaAlojamentos.begin();
- for(; it != listaAlojamentos.end(); ++it)
- {
- if((*it)->tipo().compare("apartamento") == 0)
- apartamentos++;
- else
- lojas++;
- }
- if(lojas == apartamentos)
- return "Iguais";
- if(lojas > apartamentos)
- return "Lojas";
- return "Apartamentos";
- }
- //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
- void Gestor::AddCompra(Cliente *cli, Alojamento *aloj, float preco=0, string data="")
- {
- listaVendas.push_back(new Venda(cli, aloj, preco, data));
- }
- //e)
- int Gestor::ContarAlojamentos(Cliente *cli)
- {
- int qtt = 0;
- list<Venda *>::iterator it = listaVendas.begin();
- for(; it != listaVendas.end(); ++it)
- {
- if((*it)->GetCliente() == cli)
- qtt++;
- }
- return qtt;
- }
- //f)
- int Gestor::ContarDisponiveis()
- {
- int qtt = 0;
- list<Alojamento *>::iterator it = listaAlojamentos.begin();
- for(; it != listaAlojamentos.end(); ++it)
- {
- bool found = false;
- list<Venda *>::iterator itV = listaVendas.begin();
- for(; itV != listaVendas.end(); ++itV)
- {
- if((*itV)->GetAlojamento() == (*it))
- {
- found = true;
- break;
- }
- }
- if(!found)
- qtt++;
- }
- return qtt;
- }
Advertisement
Add Comment
Please, Sign In to add comment