首页 > 解决方案 > CS50,复数问题,给出错误的结果

问题描述

这是CS50的多个问题我找不到解决问题,请帮助

PS我现在有另一个问题,如果有2个选民,1是Alice,2nd是Bob,程序应该打印出两个作为获胜者,但是它给出了第一个候选人作为获胜者,如何处理它?

//根据新投票更新投票总数

bool vote(string name){
  for(int i=0;i<candidate_count; i++){
    if(strcmp(candidates[i].name,name)==0){
      candidates[i].vote++;
      return true;
    }
  }
  return false;
}

//打印选举的获胜者(otwinnings)

void print_winner(void){
  int MaxVote=0;
  string Winner;
  for(int i=0;i<candidate_count; i++){
    if(candidates[i].vote>MaxVote){
      MaxVote=candidates[i].vote;
      Winner=candidates[i].name;
    }
  }
  for(int i=0;i<candidate_count; i++){
    if(candidates[i].vote==MaxVote){
      printf("%s\n",Winner);
      return;
    }
  }
}

这是输出

   ~/pset3/plurality/ $ ./plurality Alice Bob
Number of voters: 2
Vote: Alice
Vote: Bob
Alice

标签: carraysmaxcs50counting

解决方案


我刚刚完成了这个问题,你需要做的是在你的第一个“for”循环中打印第一个获胜者(在你的例子的第 8 行),这样它将打印第一个获胜者,然后返回并打印与他们并列的任何人。


推荐阅读