Nantes Université

Skip to content
Extraits de code Groupes Projets
Valider e42e8c32 rédigé par Antoine DESMONTILS's avatar Antoine DESMONTILS
Parcourir les fichiers

ajout affichage final table de decharge et isoloirs

parent 56b42421
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -7,16 +7,19 @@ Bulletin::Bulletin(Personne::Candidat *c):candi_(c){ ...@@ -7,16 +7,19 @@ Bulletin::Bulletin(Personne::Candidat *c):candi_(c){
Bulletin::Bulletin(){ Bulletin::Bulletin(){
this->validite_ = true; this->validite_ = true;
} }
bool Bulletin::estValide(){
return validite_;
}
bool Bulletin::estValide(){ bool Bulletin::estValide(){
return this->validite_; return this->validite_;
} }
void Bulletin::affBulletin(){ void Bulletin::affBulletin(int idElec, std::string action){
if(this->candi_ != nullptr){ if(this->getCandi() != nullptr){
std::cout<<" "<<idElec<<action<<this->getCandi()->nom()<<" "<<this->getCandi()->prenom()<<std::endl;
}
else{
std::cout<<" "<<idElec<<" prend BLANC"<<std::endl;
}
/*if(this->candi_ != nullptr){
std::cout<<"nom : " <<(*getCandi()).nom()<<"\nprenom : " <<(*getCandi()).prenom()<<"\nspol : "<<(*getCandi()).spol()<<"\n"; std::cout<<"nom : " <<(*getCandi()).nom()<<"\nprenom : " <<(*getCandi()).prenom()<<"\nspol : "<<(*getCandi()).spol()<<"\n";
std::cout<<"-> Bulletin "; std::cout<<"-> Bulletin ";
if(this->estValide()){ if(this->estValide()){
...@@ -35,6 +38,7 @@ void Bulletin::affBulletin(){ ...@@ -35,6 +38,7 @@ void Bulletin::affBulletin(){
std::cout<<"Invalide\n"; std::cout<<"Invalide\n";
} }
} }
*/
} }
Personne::Candidat* Bulletin::getCandi(){ Personne::Candidat* Bulletin::getCandi(){
......
...@@ -15,7 +15,7 @@ class Bulletin{ ...@@ -15,7 +15,7 @@ class Bulletin{
Bulletin(Personne::Candidat *c); Bulletin(Personne::Candidat *c);
Bulletin(); Bulletin();
bool estValide(); bool estValide();
void affBulletin(); void affBulletin(int idElec, std::string action);
Personne::Candidat* getCandi(); Personne::Candidat* getCandi();
void setInvalide(bool newValidite); void setInvalide(bool newValidite);
}; };
......
...@@ -54,17 +54,20 @@ void Electeur::prendreBulletinAleatoire(std::vector<Bulletin> bulletinsDispo, in ...@@ -54,17 +54,20 @@ void Electeur::prendreBulletinAleatoire(std::vector<Bulletin> bulletinsDispo, in
while(nbBulletinsPris > 0){ while(nbBulletinsPris > 0){
if(indBlanc!=-1){ if(indBlanc!=-1){
indRetrait = rand()%(bulletinsDispo.size()-1); indRetrait = rand()%(bulletinsDispo.size()-1);
bulletinsDispo[indRetrait].affBulletin(this->id(), " prend ");
this->listeBulltins_.push_back(bulletinsDispo[indRetrait]); this->listeBulltins_.push_back(bulletinsDispo[indRetrait]);
bulletinsDispo.erase(bulletinsDispo.begin()+indRetrait); bulletinsDispo.erase(bulletinsDispo.begin()+indRetrait);
} }
else{ else{
if(probaBultinBlanc_ > rand()%101){ if(probaBultinBlanc_ > rand()%101){
Bulletin B = Bulletin(nullptr); Bulletin B = Bulletin(nullptr);
B.affBulletin(this->id(), " ");
indBlanc = listeBulltins_.size(); indBlanc = listeBulltins_.size();
this->listeBulltins_.push_back(B); this->listeBulltins_.push_back(B);
} }
else{ else{
indRetrait = rand()%(bulletinsDispo.size()-1); indRetrait = rand()%(bulletinsDispo.size()-1);
bulletinsDispo[indRetrait].affBulletin(this->id(), " prend ");
this->listeBulltins_.push_back(bulletinsDispo[indRetrait]); this->listeBulltins_.push_back(bulletinsDispo[indRetrait]);
bulletinsDispo.erase(bulletinsDispo.begin()+indRetrait); bulletinsDispo.erase(bulletinsDispo.begin()+indRetrait);
} }
...@@ -77,7 +80,7 @@ void Electeur::prendreBulletinAleatoire(std::vector<Bulletin> bulletinsDispo, in ...@@ -77,7 +80,7 @@ void Electeur::prendreBulletinAleatoire(std::vector<Bulletin> bulletinsDispo, in
void Electeur::prendreBulletin(std::vector<Bulletin> bulletins, int probaBultinBlanc_){ void Electeur::prendreBulletin(std::vector<Bulletin> bulletins, int probaBultinBlanc_){
std::vector<Bulletin> bulletinsDispo = prendreBulletinLePlusProche(bulletins); std::vector<Bulletin> bulletinsDispo = prendreBulletinLePlusProche(bulletins);
prendreBulletinAleatoire(bulletinsDispo, probaBultinBlanc_); prendreBulletinAleatoire(bulletinsDispo, probaBultinBlanc_);
afflisteBulletins(); //afflisteBulletins();
} }
...@@ -110,6 +113,7 @@ void Electeur::choisirVote(int probaInvalidVote){ ...@@ -110,6 +113,7 @@ void Electeur::choisirVote(int probaInvalidVote){
bulltinChoisi_=listeBulltins_[indBlanc]; bulltinChoisi_=listeBulltins_[indBlanc];
} }
} }
bulltinChoisi_.affBulletin(this->getID()," choisit ");
} }
...@@ -127,6 +131,9 @@ void Electeur::afflisteBulletins(){ ...@@ -127,6 +131,9 @@ void Electeur::afflisteBulletins(){
} }
int Electeur::getID(){
return this->id();
}
int Electeur::getDuree_(){return this->duree_;} int Electeur::getDuree_(){return this->duree_;}
void Electeur::setDuree_(int duree){this->duree_ = duree;} void Electeur::setDuree_(int duree){this->duree_ = duree;}
......
...@@ -31,6 +31,7 @@ class Electeur : Personne{ ...@@ -31,6 +31,7 @@ class Electeur : Personne{
void voter(); void voter();
void afflisteBulletins(); void afflisteBulletins();
int getID();
int getDuree_(); int getDuree_();
void setDuree_(int duree); void setDuree_(int duree);
}; };
......
...@@ -38,6 +38,7 @@ int EspaceIsoloirs::trouverIsoloirVide(){ ...@@ -38,6 +38,7 @@ int EspaceIsoloirs::trouverIsoloirVide(){
void EspaceIsoloirs::entrerIsoloirs(Electeur* e){ void EspaceIsoloirs::entrerIsoloirs(Electeur* e){
//si les isoloirs sont plein la personne va dans la file d'attente sinon rentre dans un isoloir //si les isoloirs sont plein la personne va dans la file d'attente sinon rentre dans un isoloir
if(e != nullptr){ if(e != nullptr){
std::cout<<" "<<e->getID()<<" entre"<<std::endl;
if(this->estPlein()){ if(this->estPlein()){
this->fAttente_.push(e); this->fAttente_.push(e);
} }
...@@ -63,7 +64,8 @@ std::queue<Electeur*> EspaceIsoloirs::sortirIsoloirs(){ ...@@ -63,7 +64,8 @@ std::queue<Electeur*> EspaceIsoloirs::sortirIsoloirs(){
for(int i=0; i<this->nbIsoloir_; i++){ for(int i=0; i<this->nbIsoloir_; i++){
if(listeIsoloirs_[i].estOccup() && listeIsoloirs_[i].getTempsRestant()==0){ if(listeIsoloirs_[i].estOccup() && listeIsoloirs_[i].getTempsRestant()==0){
listeIsoloirs_[i].getOccupant()->choisirVote(this->probaBultinInvalide_); listeIsoloirs_[i].getOccupant()->choisirVote(this->probaBultinInvalide_);
listeSortie.push(listeIsoloirs_[i].sortirIsoloir()); listeSortie.push(listeIsoloirs_[i].sortirIsoloir());
std::cout<<" "<<listeIsoloirs_[i].getOccupant()->getID()<<" sort"<<std::endl;
} }
} }
//on fait avancer la queue //on fait avancer la queue
......
...@@ -10,6 +10,7 @@ bool TableDeDecharge::estOccupe(){ ...@@ -10,6 +10,7 @@ bool TableDeDecharge::estOccupe(){
void TableDeDecharge::entrerTableDecharge(Electeur* e){ void TableDeDecharge::entrerTableDecharge(Electeur* e){
if(e != nullptr){ if(e != nullptr){
std::cout<<" "<<e->getID()<<" entre"<<std::endl;
(*e).setDuree_(this->dureeDecharge_); (*e).setDuree_(this->dureeDecharge_);
//si la table est occupée, l'électeur entre dans la file d'attente sinon il peut entrer directement sur la table de décharge. //si la table est occupée, l'électeur entre dans la file d'attente sinon il peut entrer directement sur la table de décharge.
if(this->estOccupe()){ if(this->estOccupe()){
...@@ -23,8 +24,9 @@ void TableDeDecharge::entrerTableDecharge(Electeur* e){ ...@@ -23,8 +24,9 @@ void TableDeDecharge::entrerTableDecharge(Electeur* e){
} }
Electeur* TableDeDecharge::sortirTableDecharge(){ Electeur* TableDeDecharge::sortirTableDecharge(){
(*this->occupant_).prendreBulletin(this->bulletins_,this->probaBultinBlanc_); //peut être déplacé dans une autre méthode pour le faire a un autre moment mais fonctionnel quand même (*this->occupant_).prendreBulletin(this->bulletins_,this->probaBultinBlanc_); //peut être déplacé dans une autre méthode pour le faire a un autre moment mais fonctionnel quand même
this->occup_ = false; std::cout<<" "<<this->occupant_->getID()<<" sort"<<std::endl;
return this->occupant_; return this->occupant_;
} }
...@@ -43,4 +45,12 @@ Electeur* TableDeDecharge::avancerTemps(){ ...@@ -43,4 +45,12 @@ Electeur* TableDeDecharge::avancerTemps(){
return sorti; return sorti;
} }
return nullptr; return nullptr;
}
void TableDeDecharge::affPreparationTableDecharge(int nbBultinParCandidat){
std::cout<<"PREPARATION DECHARGE"<<std::endl;
for(int i = 0; i <this->bulletins_.size(); i++){
std::cout<<" "<<this->bulletins_[i].getCandi()->nom()<<" "<<this->bulletins_[i].getCandi()->prenom()<<" : "<<nbBultinParCandidat<<" bulletins"<<std::endl;
}
std::cout<<std::endl;
} }
\ No newline at end of file
...@@ -79,6 +79,14 @@ class TableDeDecharge{ ...@@ -79,6 +79,14 @@ class TableDeDecharge{
* @return Electeur* un pointeur vers un electeur * @return Electeur* un pointeur vers un electeur
*/ */
Electeur* sortirTableDecharge(); Electeur* sortirTableDecharge();
/**
* @brief Procédure affichant tous les candidats et le nombre de bulletins les représentants
* @param int nbrBulletinParCandidat le nombre de Bulletin par candidat
*/
void affPreparationTableDecharge(int nbrBulletinParCandidat);
void affBulltinPris();
}; };
#endif #endif
\ No newline at end of file
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter