在多数prblm,我设法更新每个候选人的选票,我的代码可以打印一个赢家,但仍然坚持,如果他们是许多赢家.帮助提示或线索,而不是整个解决方案.提前感谢.
void print_winner(void)
{
int v = 0; //maximum number of votes
string w; //winner of the election
for (int i = 0; i < candidate_count; i++)
{
if (v <= candidates[i].votes)
{
v = candidates[i].votes;
}
}
for (int j = 0; j < candidate_count; j++)
{
if (candidates[j].votes == v)
{
w = candidates[j].name;
}
}
printf("%s\n", w);
return;
}
3条答案
按热度按时间cfh9epnr1#
将第二个
for
循环更改为:k4emjkb12#
你需要把它分成两个for循环,如果你把它们放在一起的话,第一个循环将只运行第一个有超过1票的候选人并打印它。因为它没有检查其他的。这个循环必须完成并遍历整个集合以找到最大的票数。
ubof19bj3#
我也对同样的问题与您约2或3天现在。但我想我找到了如何打印,如果有多个赢家。
首先,我有一个变量来存储最高票数,并将其初始化为0。然后,我尝试将候选人[i].votes与当前最高票数进行比较。
然后,我将最高选票的新值分配给候选人的选票,直到循环找到比前一个更高的人。
最后,我再一次把所有候选人的票数循环一遍,看看每一个候选人的票数是否等于最高票数,如果是的话,就应该印上他们的名字,这样就解决了我印两个或两个以上获胜者的问题。