
Please modify the C++ data structure program below to detect and display multiple candidates with the same number of votes: multiple winners, multiple candidates with the second highest number of votes, multiple candidates with the third highest number of votes, and so on.
Suppose the candidates are A, B, C, D, E, F and G and their votes are:
A 100
B 200
C 200
D 400
E 100
F 400
G 300
H 300
Then your program should display,
A Fourth Place
B Third Place
C Third Place
D First Place
E Fourth Place
F First Place
G Second Place
H Second Place
with the amount of votes they received, for example: A Fourth Place with 100 votes, B Third Place with 200 votes, C Third Place with 200 and etc. Text file names and program below. Thank you.
votes.txt |
Johnson |
Miller |
Robinson |
Duffy |
Asthon |
Sampson |
Adams |
Williams |
________________________________________________________________________________
#include <array>
#include <cassert>
#include <cmath>
#include <fstream>
#include <iomanip>
#include <iostream>
#include <string>
#include <vector>
using namespace std;
const string filename = "votes.txt";
const int maxCandidates = 8;
struct Candidate
{
string name = "";
size_t votes = 0;
double percent = 0.0;
};
int main()
{
ifstream inps(filename);
assert(inps);
array<Candidate, maxCandidates> candidates;
size_t nCandidates = 0;
while (inps.good() && nCandidates < maxCandidates)
{
string name;
inps >> name;
size_t votes;
inps >> votes;
candidates[nCandidates].name = name;
candidates[nCandidates].votes = votes;
nCandidates++;
}
if (nCandidates > 0)
{
size_t namefieldwidth = 12;
size_t maxvotes = 0;
size_t maxidx = 0;
size_t totalvotes = 0;
for (size_t idx = 0; idx < nCandidates; idx++)
{
totalvotes += candidates[idx].votes;
if (candidates[idx].votes > maxvotes)
{
maxvotes = candidates[idx].votes;
maxidx = idx;
}
}
size_t namefieldwith = 16;
size_t votesfieldwidth = 16;
size_t percentfieldwidth = 16;
if (totalvotes > 0)
{
for (size_t idx = 0; idx < nCandidates; idx++)
candidates[idx].percent = 100.0 * candidates[idx].votes / static_cast<double>(totalvotes);
}
cout << fixed << setprecision(2);
cout << left << setw(namefieldwidth) << "Candidate" << ' ' << right << setw(votesfieldwidth) << "Votes Received" << ' ' << right << setw(percentfieldwidth) << setfill(' ') << "% of Total Votes " << endl << endl;
for (size_t idx = 0; idx < nCandidates; ++idx)
cout << left << setw(namefieldwidth) << candidates[idx].name << ' ' << right << setw(votesfieldwidth) << candidates[idx].votes << ' ' << right << setw(percentfieldwidth) << setfill(' ') << candidates[idx].percent << endl;
size_t totalvotesfieldwidth = namefieldwidth + votesfieldwidth + 1;
cout << setw(totalvotesfieldwidth) << totalvotes << endl << endl;
cout << "The winner of the Election is " << candidates[maxidx].name << endl;
}
return 0;
}

Trending nowThis is a popular solution!
Step by stepSolved in 2 steps

- Write a program using C++ for the following: A program that allows students to register their information It should include their first name, last name, department, faculty, grades for all courses. For Student Grades, courses are graded out of 100%, so an example of a valid score is 70. There should also be a field to check if a student is active or inactive, and if receiving government tuition assistance. Finally, they should be able to check their grades for their academic life.arrow_forwardSolve it as soon as possible using C programarrow_forwardBy using c++programming, plz complete the codingarrow_forward
- Database System ConceptsComputer ScienceISBN:9780078022159Author:Abraham Silberschatz Professor, Henry F. Korth, S. SudarshanPublisher:McGraw-Hill EducationStarting Out with Python (4th Edition)Computer ScienceISBN:9780134444321Author:Tony GaddisPublisher:PEARSONDigital Fundamentals (11th Edition)Computer ScienceISBN:9780132737968Author:Thomas L. FloydPublisher:PEARSON
- C How to Program (8th Edition)Computer ScienceISBN:9780133976892Author:Paul J. Deitel, Harvey DeitelPublisher:PEARSONDatabase Systems: Design, Implementation, & Manag...Computer ScienceISBN:9781337627900Author:Carlos Coronel, Steven MorrisPublisher:Cengage LearningProgrammable Logic ControllersComputer ScienceISBN:9780073373843Author:Frank D. PetruzellaPublisher:McGraw-Hill Education





