summaryrefslogtreecommitdiff
path: root/wk3/pset
diff options
context:
space:
mode:
Diffstat (limited to 'wk3/pset')
-rw-r--r--wk3/pset/plurality/plurality.c77
1 files changed, 77 insertions, 0 deletions
diff --git a/wk3/pset/plurality/plurality.c b/wk3/pset/plurality/plurality.c
new file mode 100644
index 0000000..27ec557
--- /dev/null
+++ b/wk3/pset/plurality/plurality.c
@@ -0,0 +1,77 @@
+#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)
+{
+
+ return false;
+}
+
+// Print the winner (or winners) of the election
+void print_winner(void)
+{
+ // TODO
+ return;
+}