Created
January 20, 2020 21:47
-
-
Save LoveBexa/7aefc8131735dacc01f380f03ac8d5bf to your computer and use it in GitHub Desktop.
cs50 pset3 plurality
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <cs50.h> | |
#include <stdio.h> | |
#include <string.h> | |
// Max number of candidates | |
#define MAX 9 | |
// Candidates have name and vote count | |
typedef struct | |
{ | |
string name; | |
int votes; | |
} | |
candidate; | |
// Array of candidates | |
candidate candidates[MAX]; | |
// Number of candidates | |
int candidate_count; | |
// Function prototypes | |
bool vote(string name); | |
void print_winner(void); | |
int main(int argc, string argv[]) | |
{ | |
// Check for invalid usage | |
if (argc < 2) | |
{ | |
printf("Usage: plurality [candidate ...]\n"); | |
return 1; | |
} | |
// Populate array of candidates | |
candidate_count = argc - 1; | |
if (candidate_count > MAX) | |
{ | |
printf("Maximum number of candidates is %i\n", MAX); | |
return 2; | |
} | |
for (int i = 0; i < candidate_count; i++) | |
{ | |
candidates[i].name = argv[i + 1]; | |
candidates[i].votes = 0; | |
} | |
int voter_count = get_int("Number of voters: "); | |
// Loop over all voters | |
for (int i = 0; i < voter_count; i++) | |
{ | |
string name = get_string("Vote: "); | |
// Check for invalid vote | |
if (!vote(name)) | |
{ | |
printf("Invalid vote.\n"); | |
} | |
} | |
// Display winner of election | |
print_winner(); | |
} | |
// Update vote totals given a new vote | |
bool vote(string name) | |
{ | |
for (int i = 0; i < candidate_count; i++) | |
{ | |
// check for name match in struct array | |
if (strcmp(name, candidates[i].name) == 0) | |
{ | |
// adds +1 to counter if matches | |
candidates[i].votes++; | |
// printf("%i\n",candidates[i].votes); | |
// prints total no. of votes to check if works | |
// prints total no. of votes to check if works | |
return true; | |
} | |
} | |
// can not find person voted for | |
return false; | |
} | |
// Print the winner (or winners) of the election | |
void print_winner(void) | |
{ | |
int maxVote = 0; | |
for (int k = 0; k < candidate_count; k++) | |
{ | |
if (maxVote < candidates[k].votes) | |
{ | |
maxVote = candidates[k].votes; | |
} | |
} | |
for (int l = 0; l < candidate_count; l++) | |
{ | |
if (candidates[l].votes == maxVote) | |
{ | |
printf("%s\n", candidates[l].name); | |
} | |
} | |
} |
Code is ok generally. However I don't understand why you have to repeat, "print total no. of votes to check if it works." Please could anyone explain? Thanks
She is just telling you a way to debug if there are any bugs. And she has typed it twice by mistake.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Code is ok generally. However I don't understand why you have to repeat, "print total no. of votes to check if it works." Please could anyone explain? Thanks