Kimossab

[POO/TAP] Freq 2016

Jan 19th, 2016
403
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.31 KB | None | 0 0
  1. //1 e 2 nao vou fazer vejam nos pds da teorica
  2. //3 - http://i.imgur.com/JsOrEk8.png
  3. //4
  4. #pragma once
  5. #include "Pessoa.h"
  6. #include "Requisição.h"
  7. #include <list>
  8. class Departamento
  9. {
  10.     private:
  11.     Pessoa *DiretorDepartamento;
  12.     string NomeDepartamento;
  13.     list<Pessoa *> ListaPessoas;
  14.     list<int> ListaEquipamentos;
  15.     list<Sala *> ListaSalas;
  16.     list<Requisição *>ListaRequisicoes;
  17.     public:
  18.     Departamento();
  19.     ~Departamento();
  20.  
  21.     void AltNomeDirector(string novo_nome)
  22.     {
  23.         DiretorDepartamento->SetNome(novo_nome);
  24.     }
  25.  
  26.     bool RequisitadoEquipamento(int cod_equi)
  27.     {
  28.         for(Requisição *r : ListaRequisicoes)
  29.             if(r->GetEquip() == cod_equi)
  30.                 return true;
  31.         return false;
  32.         /*
  33.         OU
  34.  
  35.         for(list<Requisição *>::iterator r = ListaRequisicoes.begin(); r!=ListaRequisicoes.end(); r++)
  36.             if((*r)->GetCod() == cod_equi)
  37.                 return true;
  38.         return false;*/
  39.     }
  40.  
  41.     bool PertenceSala(int cod_sala)
  42.     {
  43.         for(Sala *s : ListaSalas)
  44.             if(s->GetCod() == cod_sala)
  45.                 return true;
  46.         return false;
  47.         /*
  48.         OU
  49.  
  50.         for(list<Sala *>::iterator s = ListaSalas.begin(); s!=ListaSalas.end(); s++)
  51.             if((*s)->GetCod() == cod_sala)
  52.                 return true;
  53.         return false;*/
  54.     }
  55.    
  56.     int ContarReqAlunos()
  57.     {
  58.         int cont = 0;
  59.         for(Requisição *r : ListaRequisicoes)
  60.             if(r->GetTipoPessoa() == "aluno")
  61.                 cont++;
  62.         return cont;
  63.         /*
  64.         OU
  65.  
  66.         for(list<Requisição *>::iterator r = ListaRequisicoes.begin(); r!=ListaRequisicoes.end(); r++)
  67.             if((*r)->GetTipoPessoa() == "aluno")
  68.                 cont++;
  69.         return cont;*/
  70.     }
  71.  
  72.     bool PertencePessoa(Pessoa P)
  73.     {
  74.         for(Pessoa *p : ListaPessoas)
  75.             if(p->GetCod() == P.GetCod())
  76.                 return true;
  77.         return false;
  78.         /*
  79.         OU
  80.  
  81.         for(list<Pessoa *>::iterator p = ListaPessoas.begin(); p!=ListaPessoas.end(); p++)
  82.             if((*p)->GetCod() == P.GetCod())
  83.                 return true;
  84.         return false;*/
  85.     }
  86.  
  87.     void AddPessoa(int cod, string nome, string morada)
  88.     {
  89.         ListaPessoas.push_back(new Pessoa(cod,nome,morada));
  90.     }
  91.  
  92.     string DevolveTipoPessoaDominante()
  93.     {
  94.         int tipopess[] = {0,0,0};
  95.         for(Pessoa *p : ListaPessoas)
  96.         {
  97.             if(p->GetTipoPessoa() == "aluno")
  98.                 tipopess[0]++;
  99.             else if(p->GetTipoPessoa() == "docente")
  100.                 tipopess[1]++;
  101.             else
  102.                 tipopess[2]++;
  103.         }
  104.  
  105.         if(tipopess[0] > tipopess[1] && tipopess[0] > tipopess[2])
  106.             return "aluno";
  107.         else if(tipopess[1] > tipopess[0] && tipopess[1] > tipopess[2])
  108.             return "docente";
  109.         else return "funcionario";
  110.     }
  111.  
  112.     list<Sala> DevolveListaSalasNuncaRequisitadas()
  113.     {
  114.         list<Sala> ls;
  115.         bool test = false;
  116.         for(Sala *s : ListaSalas)
  117.         {
  118.             for(Requisição *r : ListaRequisicoes)
  119.             {
  120.                 if(s->GetCod() == r->GetSala())
  121.                 {
  122.                     test = true;
  123.                     break;
  124.                 }
  125.             }
  126.             if(!test)
  127.                 ls.push_back(*s);
  128.             else test = false;
  129.         }
  130.         return ls;
  131.     }
  132. };
  133.  
  134. //5
  135. //assumindo a classe ArvBin tem os elementos T* info; ArvBin *esq; ArvBin *dir;
  136. template <class T>
  137. bool ArvBint<T>::ProcuraRecursiva(Funcionario &F)
  138. {
  139.     bool pesq = (info == F);
  140.     if(!pesq && esq)
  141.         pesq = esq->ProcuraRecursiva(F);
  142.     if(!pesq && dir)
  143.         pesq = dir->ProcuraRecursiva(F);
  144.     return pesq;
  145. }
  146.  
  147. template <class T>
  148. int ArvBint<T>::ContarComuns(list<Funcionario*>&L)
  149. {
  150.     int cont=0;
  151.     for(Funcionar *f : L)
  152.         if(f == info)
  153.         {
  154.             cont++;
  155.             break;
  156.         }
  157.     if(dir)
  158.         cont +=dir->ContarComuns(L);
  159.     if(esq)
  160.         cont+=esq->ContarComuns(L);
  161.     return cont;
  162. }
Advertisement
Add Comment
Please, Sign In to add comment