diff options
Diffstat (limited to 'wk3/pset/runoff')
-rw-r--r-- | wk3/pset/runoff/runoff.c | 33 |
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; } |