Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //1
- //http://i.imgur.com/pQkSx2S.jpg
- //NOTA: Não se a alimentação é assim, mas não estou a ver outra maneira
- //2
- //Colocando a variável int HorasTrabalho; na class Empregados para saber quantas horas cada um trabalhou.
- //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
- //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)
- //razao: ser mais fácil de aceder e alterar o valor sem usar variáveis desnecessáriamente
- //3
- //a)
- //Pressupostos: a class NO já existe que coresponde a um nó na class Lista
- //a class Lista tem as seguintes funções:
- //int NElem(); retorna o numero de elementos da lista
- //T *GeInfo(int pos); retorna o objeto T (da template) que corresponde ao NO pos
- //void RemNo(int pos); remove o NO na posição pos
- //
- //a class Funcionarios tem as seguintes funções:
- //Tratadores *GetTratador(); retorna o ponteiro para o tratador, se não for tratador retorna NULL
- //
- //class Funcionario contém as variaveis:
- //Tratadores *t; se não for tratador será NULL
- //Adminitrativo *a; se não for administrativo será NULL
- //vetrinario *t; se não for veterinario será NULL
- //
- //class Animais comtém as seguintes variáveis e funçoes:
- //Aves *A; Se não for ave será NULL
- //Mamifero *M; Se não for mamifero será NULL
- //Aves *GetAve() { return A; }
- //Mamifero *GetMam(){ return M; }
- //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
- Lista<Tratadores> *GetTratadores(Lista<Funcionarios> *LF)
- {
- Lista<Tratadores> *LT;
- for(int i=0; i<LF->NElem(); i++)
- if(LF->GetInfo(i)->GetTratador() != NULL)
- LT->AddEnd(LF.GetInfo(i)->GetTratador());
- return LT;
- }
- //b
- Funcionario *MelPago(Lista<Funcionarios> *LF)
- {
- int max=0, aux;
- for(int i=0; i<LF->NElem(); i++)
- if(LF->GetInfo(i)->GetSalario() > max)
- {
- max = LF->GetSalario();
- aux = i;
- }
- return LF->GetInfo(aux);
- }
- //c
- void MaisAnim(Lista<Animais> *LA)
- {
- int aves = 0, mam = 0;
- for(int i=0; i<LA->NElem(); i++)
- {
- if(LA->GetInfo(i)->GetAve() != NULL)
- aves++;
- else mam++;
- }
- if(aves > mam)
- cout << "Existem mais aves (" << aves << ") do que mamiferos (" << mam << ")" << endl;
- else cout << "Existem mais mamiferos (" << mam << ") do que aves (" << aves << ")" << endl;
- }
- //d
- void RemVet(Lista<Funcionarios> *LF)
- {
- for(int i=0; i<LF->NElem(); i++)
- if(LF->GetInfo(i)->GetVet() != NULL)
- LF->RemNO(i--); // necessário pois remove-se 1 logo o i tem de se manter na mesma posição
- }
- //4
- //a
- //Polimorfismo é usar usar uma class base numa outra class, por exemplo criar uma class Linha com a class ponto por base.
- //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")
- //deste modo pode-se criar variáveis e/ou funções gerais para todas as classes que tenham por base uma outra class.
- //b
- //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
- Lista<Tabela<char*,char*>> tab;
- //5
- //a
- #include <stdio.h>
- class ArvBin
- {
- private:
- ArvBin *esq;
- ArvBin *dir;
- Funcionario *info;
- public
- ArvBin() { esq = NULL; dir = NULL; info = NULL }
- ~ArvBin()
- {
- if(dir != NULL)
- delete dir;
- if(esq != NULL)
- delete esq;
- delete info;
- }
- bool ProcuraRecursivo(Funcionario *P)
- {
- if(info == P)
- return true;
- if(esq != NULL)
- if(esq->ProcuraRecursivo(P)) return true;
- if(dir != NULL)
- if(dir->ProcuraRecursivo(P)) return true;
- return false;
- }
- int ContarComuns(Lista<Funcionario> *LF)
- {
- int total=0;
- for(int i=0; i<LF->NElem(); i++)
- if(ProcuraRecursivo(LF->GetInfo(i)))
- total++;
- return total;
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment