Advertisement
dicamarques

F2015-3A

Jun 20th, 2016
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.54 KB | None | 0 0
  1. void Explorar(FOLHA *F,int *Qntd, int *MaisUte, int *TempoEspera){
  2. //Yes fui overkill aqui, tava ainda a pensar na anterior e acabei por as juntar <.<
  3.     if(!F)
  4.         return;
  5.     if(F->Info->NUtentes == 0){//se nao ha utentes, para que perder tempo?
  6.         Explorar(F->Dir, Qntd, MaisUte, TempoEspera);
  7.         Explorar(F->Esq, Qntd, MaisUte, TempoEspera);
  8.         return;
  9.     }
  10.  
  11.     if(F->numero_servico != *MaisUte && F->Info->NUtentes >= *Qntd){ //se o num de servico for diferente do ja guardado e o NUtentes for MAIOR OU IGUAL ao guardado
  12.         if(F->Info->NUtentes == *Qntd){//se forem iguais desempate com o tempo de espera
  13.             if(F->Info->Primeiro->Utente->HoraChegada < *TempoEspera){//se o tempo de espera do guardado for "mais recente" do que o 1º utente
  14.                 *MaisUte = F->numero_servico;
  15.                 *TempoEspera = F->Info->Primeiro->Utente->HoraChegada;
  16.             }
  17.        
  18.         }
  19.         else
  20.         {
  21.             F->numero_servico = *MaisUte;
  22.             F->Info->Primeiro->Utente->HoraChegada = *TempoEspera;
  23.             F->Info->NUtentes = *Qntd;
  24.         }
  25.  
  26.     }
  27.     Explorar(F->Dir, Qntd, MaisUte, TempoEspera);//vamos para a direita
  28.     Explorar(F->Esq, Qntd, MaisUte, TempoEspera);//vamos para a esquerda
  29.  
  30. }
  31.  
  32.  
  33. int questao_3A(Arv_Bin *A){
  34.     if(!A)
  35.         return 0;
  36.     if(!A->Raiz)
  37.         return 0;
  38.     FOLHA *Root = A->Raiz;
  39.     int Qntd = 0,//quantos utentos no servico
  40.         MaisUte = 0,// servico com mais utentes
  41.         TempoEspera = 0;//qual o tempo de espera do cliente
  42.    
  43.     if(Root->Dir){
  44.         Explorar(Root->Dir, &Qntd, &MaisUte, &TempoEspera);
  45.     }
  46.     if(Root->Esq){
  47.         Explorar(Root->Esq, &Qntd, &MaisUte, &TempoEspera);
  48.     }
  49.     return MaisUte;
  50.  
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement