简体   繁体   中英

CS50 - PSET3 Run off - trouble understanding the vote function, more specifically what preferences[voter][rank] = i; does

Im currently doing cs50 and on pset3, i came across this tough problem set Runoff So basically, this is a solution for vote() function that searches for a specific candidate and returns true and records the votes if the candidate is found using a runoff-style election where voters are given preferences in order of ranks, the two-dimensional array preferences has already been initialized. Candidates is another array with a list of candidates

// 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;
        }
    }

just that i'm really confused as to what

preferences[voter][rank] = i;

does when such a candidate is found/true. What does it mean by = i; everytime the loop runs? Why not preferences[voter][rank]=candidates[i];

been struggling with this as I cant really get my head around it, any help would be really appreciated. thank you.

What does it mean by = i;

It stores the index (read: position) of the candidate in its respective candidates array. Later on, you can look up the candidate's name by using this index.

Why not preferences[voter][rank]=candidates[i];

Because (I assume) preferences is a 2-dimensional int (or so) array. Of course, you could use a different type of an array and store (for example) a pointer to the candidate as well.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM