For this very problem, we need to create a new object, candidate, which has members:
Last name
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:
Create an array of 5 element of type candidate.
Input all the entry & assign them to the candidate array.
Like for s be the input name & v be the no of
received vote for ithcandidate, we assign it by-
Array[i].name=s; //members are assigned their values
Array[i].vote=v;
To count the total number of votes, sum all the votes received.
For i=0:4
total_vote+= array[i].vote
End for loop
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).
For figure out the winner
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++ implementation
#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
Construction of object for the problem...
For this very problem, we need to create a new object, candidate, which has members:
Thus define a class like following:
Thus now a new type of object variable we will create that is candidate & the algorithm is based on the class definition.
Algorithm:
For i=0:4 total_vote+= array[i].vote End for loop
C++ implementation
Output (first run):
Output (second run):
need an explanation for this answer? contact us directly to get an explanation for this answer