Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //1 e 2 nao vou fazer vejam nos pds da teorica
- //3 - http://i.imgur.com/JsOrEk8.png
- //4
- #pragma once
- #include "Pessoa.h"
- #include "Requisição.h"
- #include <list>
- class Departamento
- {
- private:
- Pessoa *DiretorDepartamento;
- string NomeDepartamento;
- list<Pessoa *> ListaPessoas;
- list<int> ListaEquipamentos;
- list<Sala *> ListaSalas;
- list<Requisição *>ListaRequisicoes;
- public:
- Departamento();
- ~Departamento();
- void AltNomeDirector(string novo_nome)
- {
- DiretorDepartamento->SetNome(novo_nome);
- }
- bool RequisitadoEquipamento(int cod_equi)
- {
- for(Requisição *r : ListaRequisicoes)
- if(r->GetEquip() == cod_equi)
- return true;
- return false;
- /*
- OU
- for(list<Requisição *>::iterator r = ListaRequisicoes.begin(); r!=ListaRequisicoes.end(); r++)
- if((*r)->GetCod() == cod_equi)
- return true;
- return false;*/
- }
- bool PertenceSala(int cod_sala)
- {
- for(Sala *s : ListaSalas)
- if(s->GetCod() == cod_sala)
- return true;
- return false;
- /*
- OU
- for(list<Sala *>::iterator s = ListaSalas.begin(); s!=ListaSalas.end(); s++)
- if((*s)->GetCod() == cod_sala)
- return true;
- return false;*/
- }
- int ContarReqAlunos()
- {
- int cont = 0;
- for(Requisição *r : ListaRequisicoes)
- if(r->GetTipoPessoa() == "aluno")
- cont++;
- return cont;
- /*
- OU
- for(list<Requisição *>::iterator r = ListaRequisicoes.begin(); r!=ListaRequisicoes.end(); r++)
- if((*r)->GetTipoPessoa() == "aluno")
- cont++;
- return cont;*/
- }
- bool PertencePessoa(Pessoa P)
- {
- for(Pessoa *p : ListaPessoas)
- if(p->GetCod() == P.GetCod())
- return true;
- return false;
- /*
- OU
- for(list<Pessoa *>::iterator p = ListaPessoas.begin(); p!=ListaPessoas.end(); p++)
- if((*p)->GetCod() == P.GetCod())
- return true;
- return false;*/
- }
- void AddPessoa(int cod, string nome, string morada)
- {
- ListaPessoas.push_back(new Pessoa(cod,nome,morada));
- }
- string DevolveTipoPessoaDominante()
- {
- int tipopess[] = {0,0,0};
- for(Pessoa *p : ListaPessoas)
- {
- if(p->GetTipoPessoa() == "aluno")
- tipopess[0]++;
- else if(p->GetTipoPessoa() == "docente")
- tipopess[1]++;
- else
- tipopess[2]++;
- }
- if(tipopess[0] > tipopess[1] && tipopess[0] > tipopess[2])
- return "aluno";
- else if(tipopess[1] > tipopess[0] && tipopess[1] > tipopess[2])
- return "docente";
- else return "funcionario";
- }
- list<Sala> DevolveListaSalasNuncaRequisitadas()
- {
- list<Sala> ls;
- bool test = false;
- for(Sala *s : ListaSalas)
- {
- for(Requisição *r : ListaRequisicoes)
- {
- if(s->GetCod() == r->GetSala())
- {
- test = true;
- break;
- }
- }
- if(!test)
- ls.push_back(*s);
- else test = false;
- }
- return ls;
- }
- };
- //5
- //assumindo a classe ArvBin tem os elementos T* info; ArvBin *esq; ArvBin *dir;
- template <class T>
- bool ArvBint<T>::ProcuraRecursiva(Funcionario &F)
- {
- bool pesq = (info == F);
- if(!pesq && esq)
- pesq = esq->ProcuraRecursiva(F);
- if(!pesq && dir)
- pesq = dir->ProcuraRecursiva(F);
- return pesq;
- }
- template <class T>
- int ArvBint<T>::ContarComuns(list<Funcionario*>&L)
- {
- int cont=0;
- for(Funcionar *f : L)
- if(f == info)
- {
- cont++;
- break;
- }
- if(dir)
- cont +=dir->ContarComuns(L);
- if(esq)
- cont+=esq->ContarComuns(L);
- return cont;
- }
Advertisement
Add Comment
Please, Sign In to add comment