View difference between Paste ID: sfgfHuZe and 809gEFXB
SHOW: | | - or go back to the newest paste.
1
/**
2
  @brief  Allibera un rang de dies de l'agenda d'un funcionari si no te cites agafades, el
3
  rang pot ser més gran que this->dia + D en anquest cas s'ignorel els dies que son fora de 
4
  l'agenda.
5
6
  \pre 0 < id_funcionari <= N this->dia < principi <= final 
7
  \post si el funcionari amb identificació id no te cites actives en el periode de dies entre
8
  principi i final, marca tots els dies com a no hàbils.
9
*/
10
void Agenda::allibera(const int id_funcionari, const int principi, int final){
11
  final = (final > dia + D) ? dia + D : dia;
12
13
  int i = principi;
14
  bool lliure = true;
15
  while(i <= final and lliure){
16
    int j = 0;
17
    while(j < H and lliure){
18
      lliure = cites[i%MOD][id_funcionari - 1][j].es_lliure();
19
      ++j;
20
    }
21
    ++i;
22
  }
23
24
  if(lliure){
25
    i = principi;
26
    while(i <= final){
27
      int j = 0;
28
      while(j < H){
29
        cites[i%MOD][id_funcionari - 1][j].deshabilita();
30
        ++j;
31
      }
32
      ++i;
33
    }
34
  }
35
}