选票计算嵌套循环混淆

时间:2016-03-20 22:23:39

标签: c++ for-loop while-loop switch-statement nested-loops

问题: 假设必须从三个候选人中选出市议会的新成员,并假设有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;
}

最后我只是完全失去了这个程序,我不知道该怎么做了。非常感谢任何帮助。

1 个答案:

答案 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;
}

Live on Coliru