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 | } |