Você está na página 1de 1

C:\Users\vinic\Documents\GitHub\AlgoritmoseEstruturaDeDadosUFRJ\Prova P2 - 2013.1.

domingo, 11 de dezembro de 2016 22:41

//Prova 2015.1 - Algoritmos e Estrutura de Dados


#include <stdlib.h> //Por causa do NULL
#define OK 0
//Codigo de Erro
#define MATRICULA_NAO_ENCONTRADA 0
#define ARVORE_VAZIA 1
#define MEMORIA_ESGOTADA 2
//Questo 3
//Considere um cadastro de funcionrios armazenado em uma rvore binria de busca,
representada pelas estruturas de dados
//definidas abaixo:
typedef struct
{
int matricula;
char nome[41]];
float salario;
}Fun;
typedef struct arv
{
Fun funcionario;
void * pEsq;
void * pDir;
}Arv;
//Letra A:
//Construa uma funo O(log(N)) que receba a matricula de um funcionrio e retorne o seu
salrio, ou retorne o valor 0 caso
//a matricula recebina no esteja na rvore.
//Protripo:
float obterSalario(Arv * pArvore, int matricula);
#define MATRICULA_NAO_ENCONTRADA 0
float obterSalario(Arv * pArvore, int matricula)
{
//Verificar se a rvore no est vazia
if(!pArvore) return MATRICULA_NAO_ENCONTRADA;
if(pArvore->funcionario.matricula == matricula) return pArvore->funcionario.salario;
if(matricula < pArvore->funcionario.matricula)
obterSalario(pArvore->pEsq, matricula);
else
obterSalario(pArvore->pDir, matricula);
}
//Letra B:
//Construa uma funo que calcule o total da folha de pagamento(somatrio de todos os
salrios de todos os funcionrios cadastrados)
//Prottipo sugerido: void obterTotal(Arv *pArvore);
float obterTotal(Arv *pArvore);
float obterTotal(Arv *pArvore)
{
float total;
//Verificar se a arvore no est vazia
if(!pArvore) return ARVORE_VAZIA;
total = obterTotal(pArvore->pEsq) + obterTotal(pArvore->pDir) +
pArvore->funcionario.salario;
return total;
}
int main()
{
return OK;
}

-1-

Você também pode gostar