CS50 - PSET3 运行 off - 麻烦理解投票功能,更具体地说是什么 preferences[voter][rank] = i;做
CS50 - PSET3 Run off - trouble understanding the vote function, more specifically what preferences[voter][rank] = i; does
我目前正在做 cs50 和 pset3,我遇到了这个棘手的问题集 Runoff 所以基本上,这是一个 vote() 函数的解决方案,它搜索一个特定的候选人和returns true 并记录选票如果候选人是使用决选式选举找到的,其中选民按排名顺序给出偏好,二维数组 preferences 已经初始化。候选人是另一个包含候选人列表的数组
// Record preference if vote is valid
bool vote(int voter, int rank, string name)
{
for (int i = 0; i < candidate_count; i++){
if (strcmp(candidates[i].name,name)==0){
preferences[voter][rank] = i;
return true;
}
}
只是我真的很困惑
preferences[voter][rank] = i;
当这样的候选人是 found/true 时。每次循环运行时 = i;
是什么意思?为什么不 preferences[voter][rank]=candidates[i];
一直在努力解决这个问题,因为我真的无法理解它,任何帮助都会非常感激。谢谢。
What does it mean by = i;
它将候选人的索引(读取:位置)存储在其各自的 candidates
数组中。以后可以通过这个索引查询候选人的名字。
Why not preferences[voter][rank]=candidates[i];
因为(我假设)preferences
是一个二维 int
(左右)数组。
当然,您可以使用不同类型的数组并存储(例如)指向候选人的指针。
我目前正在做 cs50 和 pset3,我遇到了这个棘手的问题集 Runoff 所以基本上,这是一个 vote() 函数的解决方案,它搜索一个特定的候选人和returns true 并记录选票如果候选人是使用决选式选举找到的,其中选民按排名顺序给出偏好,二维数组 preferences 已经初始化。候选人是另一个包含候选人列表的数组
// Record preference if vote is valid
bool vote(int voter, int rank, string name)
{
for (int i = 0; i < candidate_count; i++){
if (strcmp(candidates[i].name,name)==0){
preferences[voter][rank] = i;
return true;
}
}
只是我真的很困惑
preferences[voter][rank] = i;
当这样的候选人是 found/true 时。每次循环运行时 = i;
是什么意思?为什么不 preferences[voter][rank]=candidates[i];
一直在努力解决这个问题,因为我真的无法理解它,任何帮助都会非常感激。谢谢。
What does it mean by = i;
它将候选人的索引(读取:位置)存储在其各自的 candidates
数组中。以后可以通过这个索引查询候选人的名字。
Why not preferences[voter][rank]=candidates[i];
因为(我假设)preferences
是一个二维 int
(左右)数组。
当然,您可以使用不同类型的数组并存储(例如)指向候选人的指针。