对于循环不能正常工作

时间:2012-03-25 10:06:28

标签: c++ for-loop

我需要for循环在程序中执行4次,然后在第四次退出并给出结果的总和。

它不应该把X视为一个被宠坏的投票

三个总数和被破坏的投票数被初始化为0.

现在有一个for循环,从1到投票站的数量。

在这个循环中是一个while循环。屏幕上出现提示消息,询问 他或她想投票的候选人的选民。然后输入选民的选择。

while循环内部是一个switch语句,用于递增正确的总数。默认 选项用于计算被破坏的投票数量。

输入X作为选择时退出while循环。

退出for循环时,会显示三个总计和损坏的投票数。

这是我的代码

int main()
{
    const int NR_VOTING_STATIONS = 4;
    int votesForA, votesForB, votesForC, spoiltVotes;
    char vote;

    // initialise totals
    votesForA = 0;
    votesForB = 0;
    votesForC = 0;
    spoiltVotes = 0;

    // LOOP of INTEREST START
    //loop over the voting stations
    for ( int i = 1; i <= NR_VOTING_STATIONS; i++)
    {

        //loop over voters
        while (vote != 'X')
        {
            cout << "Vote for candidate A, B or C : " << endl;
            cin  >> vote;

            switch(vote)
            {
                  case 'A':
                       votesForA++;
                       break;
                  case 'B':
                       votesForB++;
                       break;
                  case 'C':
                       votesForC++;
                       break;
                  default:
                       spoiltVotes++;
            }                     
        }
    }
    // LOOP of INTEREST END

    //display results
    cout << endl  << endl;
    cout << "Total candidate A : " << votesForA   << endl;
    cout << "Total candidate B : " << votesForB   << endl;
    cout << "Total candidate C : " << votesForC   << endl;
    cout << "Total spoilt votes: " << spoiltVotes << endl; 

    system("pause");
    return 0;
}

由于

5 个答案:

答案 0 :(得分:1)

只需添加switch

即可
case 'X':
    break;

因为while条件在下一轮之前不会执行。

答案 1 :(得分:1)

如果问题是

  

它不应该把X视为一个被宠坏的投票

答案是添加一个案例:

case 'X':
     break;

答案 2 :(得分:1)

另外,请小心首先初始化投票,或使用do {} while()而不是while {}

答案 3 :(得分:0)

如果你需要for循环执行四次,为什么不将它包围在另一个for循环中呢?

答案 4 :(得分:0)

在while循环中,您应该检查该轮询中的选民是否仍然可用。由于您在输入“X”处于中立状态,因此应将其添加为交换机中的一个案例。

您的新while循环应如下所示:

Voters_Still_Present = 1;
while (Voters_Still_Present)
    {
        cout << "Vote for candidate A, B or C : " << endl;
        cin  >> vote;

        switch(vote)
        {
              case 'A':
                   votesForA++;
                   break;
              case 'B':
                   votesForB++;
                   break;
              case 'C':
                   votesForC++;
                   break;
              case 'X':
                   //do nothing
                   break;
              default:
                   spoiltVotes++;
        }  
       /* Here, find out if voters are still available in the present station.
          If yes, Voters_Still_Present = 1; else  Voters_Still_Present = 0;
        */            
    }