C++ program Input list of candidates and find winner of the Election based on received votes

Here, we are implementing a C++ program Input list of candidates and find winner of the Election based on received votes.
Submitted by Radib Kar, on November 28, 2018 [Last updated : March 01, 2023]

Find the winner of the Election based on received votes

Description: In the following article we are going to learn how to solve problem of such type using class definitions.

Problem statement:

Write a program that allows the user to enter the last names of five candidates in a local election and the number of votes received by each candidate. The program should then output each candidate’s name, the number of votes received, and the percentage of the total votes received by the candidate. Your program should also output the winner of the election.

Solution:

Construction of object for the problem...

For this very problem, we need to create a new object, candidate, which has members:

  1. Last name
  2. No of votes received

Thus define a class like following:

class candidate{
	//public member since we are not 
	//bothered about security of members
	public: 
		string name;
		int vote;
};

Thus now a new type of object variable we will create that is candidate & the algorithm is based on the class definition.

Algorithm to find the winner of the Election based on received votes

  1. Create an array of 5 element of type candidate.
  2. Input all the entry & assign them to the candidate array.
  3. Like for s be the input name & v be the no of 
    received vote for ith candidate, we assign it by-
    Array[i].name=s; //members are assigned their values
    Array[i].vote=v;
    
  4. To count the total number of votes, sum all the votes received.
  5. For i=0:4
    total_vote+= array[i].vote
    End for loop
    
  6. To calculate percentage vote received for each of the candidates, divide no of votes received by total_vote& make percentage. (Take care of integer division, result may reflect 0, if you change the order, first multiply with 100 or use floating calculation).
  7. For figure out the winner
  8. Set max= INT_MIN, count=0;
    for i=0:4
    Find the max vote received by any candidate in the election
    End for loop
    
    For i=0:4
    if no of received vote for i th candidate==max
    Store i
    Increase count // no of winner candidate
    
    Print the name(s) of winner(s) using the stored indexes.
    

C++ program to find the winner of the Election based on received votes

#include <bits/stdc++.h>
using namespace std;

class candidate {
public:
    string name;
    int vote;
};

void outputElection(candidate* arr)
{
    int total_vote = 0;
    for (int i = 0; i < 5; i++) {
        //finding total no of votes
        total_vote = total_vote + arr[i].vote;
    }

    cout << "result of the election............." << endl;
    cout << "name of candidate"
         << "\t"
         << "vote received"
         << "\t"
         << "percentage" << endl;
    for (int i = 0; i < 5; i++) {
        cout << arr[i].name << "\t\t\t";
        cout << arr[i].vote << "\t\t";
        cout << (arr[i].vote * 100) / total_vote << "%" << endl;
    }

    int max = INT_MIN, count = 0;
    int index[5] = { 0 };

    for (int i = 0; i < 5; i++) {
        if (arr[i].vote > max) {
            max = arr[i].vote;
        }
    }

    for (int i = 0; i < 5; i++) {
        if (arr[i].vote == max) {
            index[count] = i;
            count++;
        }
    }

    if (count == 1)
        cout << "The winner is " << arr[index[count - 1]].name << endl;
    else {
        cout << "There is tie between:" << endl;
        for (int i = 0; i < count - 1; i++)
            cout << arr[index[i]].name << ", ";
        cout << arr[index[count - 1]].name << endl;
        cout << "all are winner\n";
    }
    return;
}

int main()
{
    string s;
    int v;
    candidate arr[5];
    cout << "enter candidates last name, there are five candidates\n";
    for (int i = 0; i < 5; i++) {
        cout << "enter candidate " << i << " last name\n";
        cin >> s;
        arr[i].name = s;
        cout << "enter no of votes received by candidate " << i << endl;
        cin >> v;
        arr[i].vote = v;
    }
    outputElection(arr);
    return 0;
}

Output (first run):

enter candidates last name, there are five candidates
enter candidate 0 last name
Peter
enter no of votes received by candidate 0
30
enter candidate 1 last name
Roy
enter no of votes received by candidate 1
20
enter candidate 2 last name
Ali
enter no of votes received by candidate 2
40
enter candidate 3 last name
Hales
enter no of votes received by candidate 3
60
enter candidate 4 last name
john
enter no of votes received by candidate 4
10
result of the election.............
name of candidate       vote received   percentage
Peter                   30              18%
Roy                     20              12%
Ali                     40              25%
Hales                   60              37%
john                    10              6%
The winner is Hales

Output (second run):

enter candidates last name, there are five candidates
enter candidate 0 last name
Morgan
enter no of votes received by candidate 0
25
enter candidate 1 last name
Wasim
enter no of votes received by candidate 1
15
enter candidate 2 last name
Stones
enter no of votes received by candidate 2
25
enter candidate 3 last name
Harris
enter no of votes received by candidate 3
15
enter candidate 4 last name
Enderson
enter no of votes received by candidate 4
20
result of the election.............
name of candidate       vote received   percentage
Morgan                  25              25%
Wasim                   15              15%
Stones                  25              25%
Harris                  15              15%
Enderson                20              20%
There is tie between:
Morgan, Stones
all are winner


Related Programs



Comments and Discussions!

Load comments ↻





Copyright © 2024 www.includehelp.com. All rights reserved.