【问题标题】:CS50, Plurality question, gives the wrong resultCS50,复数问题,给出错误的结果
【发布时间】:2020-09-24 05:26:48
【问题描述】:

这是来自 CS50 的复数问题 我找不到解决问题,请帮助

P.S 我现在还有一个问题,如果有 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;
}

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

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

【问题讨论】:

  • 欢迎来到 Stack Overflow。请阅读the help pages,接受SO tour,阅读How to Ask,以及this question checklist。最后请edit您的问题包括您的代码的minimal reproducible example,以及您遇到的问题的描述(应该做什么,真正发生了什么,某些特定输入的预期输出是什么? )
  • @hanie 关于stringcs50.h 头文件将其定义为char * 的别名,考虑到cs50 标记,很可能使用头文件。
  • 如果您有新问题,请创建一个新问题并撤消上一次编辑。考虑做一个回答,让这个问题彻底结束。
  • 每个问题一个问题,请。

标签: c arrays max cs50 counting


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-19
    • 1970-01-01
    • 1970-01-01
    • 2016-08-04
    • 1970-01-01
    • 1970-01-01
    • 2014-09-16
    • 1970-01-01
    相关资源
    最近更新 更多