Tideman中的投票功能(CS50的pset 3)

纳米

我正在尝试处理投票功能,有两个问题想寻求您的帮助:

  1. 在表决功能定义中,我们具有:
bool vote(int rank, string name, int ranks[])

我不明白rank参数的用途,为什么在这里声明它?

  1. 我对表决功能的解决方案如下:
// Update ranks given a new vote
bool vote(int rank, string name, int ranks[])
{
    for (int j = 0; j < candidate_count; j++)
    {
        for (int k = 0; k < candidate_count; k++)
        {
            //Compare the name provided by the user with the name of the candidates numbered jth in the array candidates[MAX] which already populated above
            if (strcmp(name, candidates[k]) == 0)
            {
                ranks[j] = k;
                printf("ranks[%d] = %d\n", j, k);
                }
        }
        return true;
    }
    return false;
}

printf函数的结果如下(候选数= {a,b,c},voter_count = 2):

等级1:a,等级[0] = 0;等级2:b,等级[0] = 1;等级3:c,等级[0] = 2;等级1:c,等级[0] = 2;等级2:b,等级[0] = 1;等级3:a,等级[0] = 0

等级[j]中j的值未更新。我该如何解决这个问题?

非常感谢你的帮助!

马纳夫·杜比

这是一些代码:

// Update ranks given a new vote    
bool vote(int rank, string name, int ranks[]){                      
    
    //We want to cycle through the list of candidates given
    for(int i = 0; i < candidate_count; i++){

        //If the candidate(s) in the array matches with string name, we will continue
        if(strcmp(candidates[i], name) == 0){

            //This is the tricky part to understand. Read below for answer.
            ranks[rank] = i;
            return true;
        }
    }
    
    return false;
}

int rank代表用户在候选人中的给定排名,并且int i代表候选人在中的位置candidates[]我们要ranks[]根据正确的排名进行更新仍然很难理解,因此这里是一个示例。


我们有四个候选人:约翰,吉姆,山姆,亚历克斯

string candidates[MAX];,约翰在candidates[0],吉姆在candidates[1],山姆在candidates[2],亚历克斯在candidates[3]

假设用户投票,并按以下顺序投票:

  1. 亚历克斯
  2. 约翰
  3. 吉姆
  4. 山姆

让我们在中运行它bool vote(int rank, string name, int ranks[])

  1. vote(j, name, ranks)其中j = 0名称= Alexranks是ranks []
  2. 我们将循环使用Alex的名称,直到在中找到它为止candidates[MAX]
  3. candidates[i]在i = 3的地方找到了Alex
  4. 我们要更新 ranks[]
  5. ranks[rank] = i;表示atranks[rank]等于i等于3。换句话说,ranks [0]等于Alex在中的第i个位置candidates[MAX]

然后重复此循环,直到完成所有选民的排名。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

CS50的pset3 Tideman ...我的锁定功能似乎不起作用

卡在CS50 PSET3频率中

CS50 - PSET3 跑掉 - 無法理解投票功能,更具體地說,偏好[voter][rank] = i; 做

CS50 Pset3音乐-sizeof(string)在做什么?

如何实现cs50的pset3频率并理解notes.c

CS50 Pset3错误:预期的标识符或'('

如何正确打印 JPEG 文件的字节?- CS50 PSET3 恢复

CS50复数PSET3-代码似乎可以正常工作,但check50表示相反

根据 CS50 的 pset3 潮汐人中的 check50 排序对不起作用

CS50 pset4中的模糊功能无法完全正常工作

CS50 pset3 多个程序为 print_winner 函数给出错误(没有打印两个选举获胜者)

为什么我在 CS50 的 filter(less) (PSET 4) 中的模糊功能没有返回正确的值?

检查有向图CS50 tideman中是否存在循环

CS50 PSet 1贪婪

CS50 Pset7财务

CS50径流:投票算法,用于在径流选举中制表选民的投票偏好

CS50x pset3(为什么我的程序未通过Check50?)

CS50 pset4滤镜灰度轮功能问题

CS50 Pset4 Filter(不太舒服)模糊功能算法问题

CS50 pset4 - 滤镜(不太舒服),棕褐色功能

在c的拼写程序中实现多个功能会返回所有拼写错误的单词。在cs50 pset5拼写器中

无法使索引功能在CS50财务中工作

cs50 web pset 1 中的登录表单根本不起作用(使用烧瓶)

如何在 vigenere cipherkey cs50 pset2 中重用(循环)密钥

错误:“free():在 tcache 2 中检测到双重空闲” - CS50 PSET 4:恢复

CS50 Pset 2-ceasar密码

pset4 cs50 反射 eroor

CS50 pset5拼写怪异的bug

CS50过滤器“模糊” pset4