Revision: 69803
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at September 10, 2015 00:27 by garciacarmonaam
Initial Code
void distributeSeats() { for (int i = 0; i < this->seats; i++) { int mostvoted_code = 0; int votes = 0; for (int j = 0; j < this->candidatures_number; j++) { if (distribution[i][j] > votes) { mostvoted_code = j; votes = distribution[i][j]; } } Candidature *mostvoted = NULL; bool hasItBeenFound = false; this->candidatures->point1stCandidature(); while (!this->candidatures->isCandidaturesListEndPointed() && !hasItBeenFound) { this->candidatures->checkPointedCandidature(mostvoted); if (mostvoted->getCode() == mostvoted_code) hasItBeenFound = true; else this->candidatures->moveCandidaturesPointer(); } int current_seats = mostvoted->getObtainedSeats(); mostvoted->setObtainedSeats(current_seats + 1); this->candidatures->point1stCandidature(); if (i + 1 < this->seats) { distribution[i + 1][mostvoted_code] = distribution[0][mostvoted_code] / (2 * mostvoted->getObtainedSeats() + 1); int k = 0; while (k < this->candidatures_number) { if (k != mostvoted_code) distribution[i + 1][k] = distribution[i][k]; k++; } } } }
Initial URL
https://github.com/garciacarmonaam/saintelague
Initial Description
Really, this is part of a set of classes that is stored in a Git repository and under MIT license. The function I'll expose is Circunscription::distributeSeats().
Initial Title
An algorithm of Sainte-Laguë\'s method
Initial Tags
c++
Initial Language
C++