问题: 假设必须从三个候选人中选出市议会的新成员,并假设有4个投票站。我们需要一个C ++程序来计算每个候选人的投票数并显示结果。在每个投票站,选民通过在选票上选择A,B或C进行投票。投票官必须将投票输入计划,以便计算。当输入特定投票站的所有投票时输入X.
- 使用for循环从1到投票站的数量。
- 在for循环中是一个while循环,提示用户他们想要投票。
- 在while循环中是一个switch语句来增加total和default来计算被破坏的投票。
- 输入X进行选择时退出while循环。
- 退出for循环时,会显示三个总数和损坏的投票数。
#include <iostream>
using namespace std;
int main()
{
const int VOTING_STATIONS = 4;
int votesForA = 0, votesForB = 0, votesForC = 0, spoiltVotes = 0;
char vote;
int numVotes;
for (int i = 0; i <= VOTING_STATIONS; i++)
{
numVotes = 0;
while (vote != 'X')
{
cout << "Which candidate do you want to choose?:" << endl;
cin >>vote;
switch(vote)
{
case 'A':
votesForA++;
break;
case 'B':
votesForB++;
break;
case 'C':
votesForC++;
break;
case 'X':
break;
default:
spoiltVotes++;
break;
}
}
}
// display results
cout << "Total candidate A: " << votesForA << endl;
cout << "Total candidate B: " << votesForB << endl;
cout << "Total candidate C: " << votesForC << endl;
cout << "Total spoilt votes: " << spoiltVotes << endl;
return 0;
}
最后我只是完全失去了这个程序,我不知道该怎么做了。非常感谢任何帮助。
答案 0 :(得分:0)
如果我理解了这个问题,那么你主要需要用站点上的循环替换嵌套的for循环并稍微清理一下开关:
#include <iostream>
using namespace std;
int main()
{
// initialise totals
const int NR_VOTING_STATIONS = 4;
int votesForA = 0, votesForB = 0, votesForC = 0, spoiltVotes = 0;
char votes[] = { "ABCXAXBXBX" };
int numVotes = -1;
// loop over the voting stations
for( int i = 0; i < NR_VOTING_STATIONS; ++i)
{
char vote = 0;
while( vote != 'X' )
{
cout << "Which candidate do you want to choose: ";
vote = votes[++numVotes];
std::cout << vote << std::endl;
switch (vote)
{
case 'A':
++votesForA;
break;
case 'B':
++votesForB;
break;
case 'C':
++votesForC;
break;
case 'X':
break;
default:
++spoiltVotes;
break;
}
}
}
// display results
cout << "Total candidate A: " << votesForA << endl;
cout << "Total candidate B: " << votesForB << endl;
cout << "Total candidate C: " << votesForC << endl;
cout << "Total spoilt votes: " << spoiltVotes << endl;
return 0;
}