C Learning Objectives The objective of this lab is to gain e

C++

Learning Objectives:

The objective of this lab is

to gain experience working with an

STL container, in particular the STL list.

Note: STL <algorithm>

sort()

cannot be used

with

list

(

list

provides its own

sort()

operation).

Assignment

:

Write a program that allows the user to enter the last names of five

candidates in a local election and the votes received by each candidate. The program

should then output each candidate’s name, the votes received by that candidate, and th

e

percentage of the total votes received by the candidate. Your program should also output

the winner of the election. A sample output is

Candidate

Votes Received

% of Total Votes

Johnson

5000

25.91

Miller

4000

20.72

Duffy

6000

31.09

Ro

binson

2500

12.95

Anthony

1800

9.33

Total

19300

The Winner of the Election is Duffy.

First design a

Vote structure

to hold candidate, votes received and percentage of total

votes. Then use

a STL list of Vote structure to implement the pro

gram

. Whenever

possible, you should

use STL functions and/or iterators to accomplish the necessary

operations

. Otherwise, you can not get credit for your implementation. Design the

program top

-

down, with only function calls in main, and function calls w

ithin functions.

Solution

#include <iostream>
#include <list>
#include <cmath>
using namespace std;

#define TOTAL_CANDIDATES 5
struct Vote{
   string candidateName;
   int votesReceived;
   float percentageOfTotalVotes;
   Vote( string name, int votesR ){
       candidateName = name;
       votesReceived = votesR;
   }
};

list< Vote > candidateList;

void getInput(){
   string candidateName;
   int votesReceived;
   for(int cnd = 0; cnd < TOTAL_CANDIDATES; cnd++ )
   {
       cout << \"Enter candidate name: \";
       cin >> candidateName;
       cout << \"Enter votes received by the candidate: \";
       cin >> votesReceived;

       Vote newVote = Vote( candidateName, votesReceived );
       candidateList.push_back( newVote );
   }
}

inline float roundItUpToTwoDecimal( float num ){
   float result = num*100*100;
   return round(result)/100;
}

int updatePercentageOfVotesAndReturnTotalVotes(){
   //first calculating total votes, need to iterate over our list
   int totalVotes = 0;
   for( list<Vote>::iterator it = candidateList.begin(); it != candidateList.end(); it++ ){
       totalVotes = totalVotes + (*it).votesReceived;
   }
   //now update percentage of votes for each candidate
   for( list<Vote>::iterator it = candidateList.begin(); it != candidateList.end(); it++ ){
       float percentageOfVotes = (((*it).votesReceived)*1.0)/totalVotes;
       //rounding it up to have two decimal spaces
       (*it).percentageOfTotalVotes = roundItUpToTwoDecimal( percentageOfVotes );
   }
   return totalVotes;
}

void printOutput( int totalVotes ){
   cout << \"Candidate\ Votes Received\ \\% of Total Votes\ \";
   string winner = \"None\";
   int winnerVotes = -100;

   for( list<Vote>::iterator it = candidateList.begin(); it != candidateList.end(); it++ ){
       cout << (*it).candidateName << \"\ \" << (*it).votesReceived << \"\ \";
       cout << (*it).percentageOfTotalVotes << endl;
       if( (*it).votesReceived > winnerVotes ){
           winner = (*it).candidateName;
           winnerVotes = (*it).votesReceived;
       }
   }
   cout << \"Total\ \" << totalVotes << endl;  
   cout << \"The Winner of the Election is \" << winner << \".\"<< endl;
   return;
}

int main(){
   getInput(); //got the input, that was required
   int totalVotes = updatePercentageOfVotesAndReturnTotalVotes(); //to update percentage of total votes for each candidate
   printOutput( totalVotes ); //print the output, as required
   return 0;
}

C++ Learning Objectives: The objective of this lab is to gain experience working with an STL container, in particular the STL list. Note: STL <algorithm>
C++ Learning Objectives: The objective of this lab is to gain experience working with an STL container, in particular the STL list. Note: STL <algorithm>
C++ Learning Objectives: The objective of this lab is to gain experience working with an STL container, in particular the STL list. Note: STL <algorithm>
C++ Learning Objectives: The objective of this lab is to gain experience working with an STL container, in particular the STL list. Note: STL <algorithm>

Get Help Now

Submit a Take Down Notice

Tutor
Tutor: Dr Jack
Most rated tutor on our site