1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
|
TGroup Creer_Group(const int NumGroup){
/*
* TGroup Creer_Group(const int NumGroup)
* Tante de creer une equipe de 2 ou 3 personnes pour un tour de Garde
* Teste si la creation de ce group est oportun.
* SIOUI
* Calcule l'Horaire du groupe (Hi = Date + laps de temps de travail )
* Ajoute a E le nouveau group et son Horaire
* change le Satus de D en fonction de Hi et des delais requis
* SINON
* Laisse le system ds son etat actuel
*
* PARAMETRES
* Entree:
* NumGroup ={1=> (6H-14H,debut=6H); 2=>(13-21H,..); 3=>(20H-7H,...)} permet de deduire les variable debut et Hi
*
* Sortie:
* CurrentGroupe Vecteur de 3 elts contenant l'id de 2 ou 3 personnes d'une equipe de garde.
* CurrentGroupe =(-1,-1,-1) ==> personne n'est disponible
* CurrentGroupe =(x,y,z) ==> une equipe de 3 personnes
* CurrentGroupe =(x,y,-1)==> une equipe de 2 personnes
* toute autre valeure serait consideree inconcistante donc equivalente a (-1,-1,-1)
*/
TGroup CurrentGroupe =(-1,-1,-1);
Bool ES = false;
SI ( NumGroup < 2 ou NumGroup > 3 ) Alors Rien A faire ==> FIN
//Equipe de 6H Ou de 13H
SI NumGroup = ( 1 ou 2){
Choisir dans D ts le personel dont la disponibilite correspond a debut// (soit k le nbr de ces disponibles)
Si (k < 3 ) Impossible ==> FIN
Creer un ens Gi des Arrangement de 3 dans k //soit n lenombre de ces Arrangements
//Essayer au besoins ts les Gi
Pour i allant de 0 a n-1{
CurrentGroupe = Gi;//pour m allant de 0 a 2 CurrentGroupe[k]= Gi[m]
ES = EtatStable(CurrentGroupe,D,(NumGroup+1)%3);
//stabilite garantie
SI (ES){
Ajouter a E le Couple (CurrentGroupe,H);//H se deduit de la date et de NumGroup
Modifier(D,CurrentGroupe);//en tenant compte d'eventuele delai legal minimum
}
SINON{//stabilite non garantie pas de modif
Inpossible ==> FIN
}
}//fin du parcourt des Gi
}
//NumGroup = 3<==> Equipe de 20H
SI_NON{
Choisir dans D ts le personel dont la disponibilite correspond a debut// (soit k le nbr de ces disponibes)
Si (k < 2 ) Impossible ==> FIN
Creer un ens Gi des Arrangement de 2 dans k //soit n lenombre de ces Arrangements
//Essayer au besoins ts les Gi
Pour i allant de 0 a n-1{
CurrentGroupe = Gi;//pour m allant de 0 a 1 CurrentGroupe[k]= Gi[m]
ES = EtatStable(CurrentGroupe,D,(NumGroup+1)%3);
SI (ES){
Ajouter a E le Couple (CurrentGroupe,H);//H se deduit de la date et de NumGroup
Modifier(D,CurrentGroupe);//en tenant compte d'eventuele delai legal minimum
}
SINON{//stabilite non garantie pas de modif
Inpossible ==> FIN
}
}//fin du parcourt des Gi
}
Retourner(CurrentGroupe);
} |
Partager