Kimossab

TAP - Freq 2013

Jan 7th, 2015
350
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.01 KB | None | 0 0
  1. //1
  2. //http://i.imgur.com/pQkSx2S.jpg
  3. //NOTA: Não se a alimentação é assim, mas não estou a ver outra maneira
  4.  
  5. //2
  6. //Colocando a variável int HorasTrabalho; na class Empregados para saber quantas horas cada um trabalhou.
  7. //Para saber o ordenado base (baseado no tipo de empregado) ou se usavam variáveis globais, defines ou criavam-se uma variável "SalarioBase" na class Empregados
  8. //Para saber o ordenado de cada empregado era só multiplicar as 2 variaveis referenciadas anteriormente. (Eu escolheria as variáveis globais para resolver o problema do salário base)
  9. //razao: ser mais fácil de aceder e alterar o valor sem usar variáveis desnecessáriamente
  10.  
  11. //3
  12. //a)
  13. //Pressupostos: a class NO já existe que coresponde a um nó na class Lista
  14. //a class Lista tem as seguintes funções:
  15. //int NElem(); retorna o numero de elementos da lista
  16. //T *GeInfo(int pos); retorna o objeto T (da template) que corresponde ao NO pos
  17. //void RemNo(int pos); remove o NO na posição pos
  18. //
  19. //a class Funcionarios tem as seguintes funções:
  20. //Tratadores *GetTratador(); retorna o ponteiro para o tratador, se não for tratador retorna NULL
  21. //
  22. //class Funcionario contém as variaveis:
  23. //Tratadores *t; se não for tratador será NULL
  24. //Adminitrativo *a; se não for administrativo será NULL
  25. //vetrinario *t; se não for veterinario será NULL
  26. //
  27. //class Animais comtém as seguintes variáveis e funçoes:
  28. //Aves *A; Se não for ave será NULL
  29. //Mamifero *M; Se não for mamifero será NULL
  30. //Aves *GetAve() { return A; }
  31. //Mamifero *GetMam(){ return M; }
  32. //NOTA: Nao sei se no exame/freq podemos ter estes pressupostos ou se temos que fazer o codigo deles/alguns, perguntem ao stor na hora
  33. Lista<Tratadores> *GetTratadores(Lista<Funcionarios> *LF)
  34. {
  35.     Lista<Tratadores> *LT;
  36.     for(int i=0; i<LF->NElem(); i++)
  37.         if(LF->GetInfo(i)->GetTratador() != NULL)
  38.             LT->AddEnd(LF.GetInfo(i)->GetTratador());
  39.     return LT;
  40. }
  41. //b
  42. Funcionario *MelPago(Lista<Funcionarios> *LF)
  43. {
  44.     int max=0, aux;
  45.     for(int i=0; i<LF->NElem(); i++)
  46.         if(LF->GetInfo(i)->GetSalario() > max)
  47.         {
  48.             max = LF->GetSalario();
  49.             aux = i;
  50.         }
  51.     return LF->GetInfo(aux);
  52. }
  53. //c
  54. void MaisAnim(Lista<Animais> *LA)
  55. {
  56.     int aves = 0, mam = 0;
  57.     for(int i=0; i<LA->NElem(); i++)
  58.     {
  59.         if(LA->GetInfo(i)->GetAve() != NULL)
  60.             aves++;
  61.         else mam++;
  62.     }
  63.     if(aves > mam)
  64.         cout << "Existem mais aves (" << aves << ") do que mamiferos (" << mam << ")" << endl;
  65.     else cout << "Existem mais mamiferos (" << mam << ") do que aves (" << aves << ")" << endl;
  66. }
  67. //d
  68. void RemVet(Lista<Funcionarios> *LF)
  69. {
  70.     for(int i=0; i<LF->NElem(); i++)
  71.         if(LF->GetInfo(i)->GetVet() != NULL)
  72.             LF->RemNO(i--); // necessário pois remove-se 1 logo o i tem de se manter na mesma posição
  73. }
  74.  
  75. //4
  76. //a
  77. //Polimorfismo é usar usar uma class base numa outra class, por exemplo criar uma class Linha com a class ponto por base.
  78. //Isto faz com que a "nova" class tenha um ponteiro para a class base, ou seja, essa class pode aceder às variaveis/funçoes da class base que não sejam "private" ("public"/"protected")
  79. //deste modo pode-se criar variáveis e/ou funções gerais para todas as classes que tenham por base uma outra class.
  80.  
  81. //b
  82. //Supondo que Codigo postal nem cidade são uma class ou um "tipo" já por si mesmas e supondo que são do tipo char
  83. Lista<Tabela<char*,char*>> tab;
  84.  
  85. //5
  86. //a
  87. #include <stdio.h>
  88. class ArvBin
  89. {
  90.     private:
  91.         ArvBin *esq;
  92.         ArvBin *dir;
  93.         Funcionario *info;
  94.     public
  95.         ArvBin() { esq = NULL; dir = NULL; info = NULL }
  96.         ~ArvBin()
  97.         {
  98.             if(dir != NULL)
  99.                 delete dir;
  100.             if(esq != NULL)
  101.                 delete esq;
  102.             delete info;
  103.         }
  104.         bool ProcuraRecursivo(Funcionario *P)
  105.         {
  106.             if(info == P)
  107.                 return true;
  108.             if(esq != NULL)
  109.                 if(esq->ProcuraRecursivo(P)) return true;
  110.             if(dir != NULL)
  111.                 if(dir->ProcuraRecursivo(P)) return true;
  112.             return false;
  113.         }
  114.         int ContarComuns(Lista<Funcionario> *LF)
  115.         {
  116.             int total=0;
  117.             for(int i=0; i<LF->NElem(); i++)
  118.                 if(ProcuraRecursivo(LF->GetInfo(i)))
  119.                     total++;
  120.             return total;
  121.         }
  122. };
Advertisement
Add Comment
Please, Sign In to add comment