summaryrefslogtreecommitdiff
path: root/wk3/pset/runoff
diff options
context:
space:
mode:
Diffstat (limited to 'wk3/pset/runoff')
-rw-r--r--wk3/pset/runoff/runoff.c33
1 files changed, 32 insertions, 1 deletions
diff --git a/wk3/pset/runoff/runoff.c b/wk3/pset/runoff/runoff.c
index c9ede93..4daa519 100644
--- a/wk3/pset/runoff/runoff.c
+++ b/wk3/pset/runoff/runoff.c
@@ -164,7 +164,38 @@ void tabulate(void)
// Print the winner of the election, if there is one
bool print_winner(void)
{
- // TODO
+ int winners[candidate_count];
+ winners[0] = 0;
+ // reset it
+ for (int j = 1; j < candidate_count; j++)
+ {
+ winners[j] = -1;
+ }
+ //
+ for (int i = 1; i < candidate_count; i++)
+ {
+ if (candidates[winners[0]].votes < candidates[i].votes) // if the new candidate has more votes than previous
+ {
+ // clear the list of winners
+ for (int j = 1; j < candidate_count; j++)
+ {
+ winners[j] = -1;
+ }
+ // put it at the start of the new list
+ winners[0] = i;
+ }
+ else if (candidates[winners[0]].votes == candidates[i].votes)
+ {
+ for (int j = 1; j < candidate_count; j++)
+ {
+ if (winners[j] == -1)
+ {
+ winners[j] = j;
+ break;
+ }
+ }
+ }
+ }
return false;
}