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