【问题标题】:For loop not working correctlyFor 循环无法正常工作
【发布时间】:2012-03-25 10:06:27
【问题描述】:

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

不应将 X 视为弃票

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

接下来是一个 for 循环,从 1 到投票站的数量。

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

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

当输入x的选择时退出循环。

退出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;
}

谢谢

【问题讨论】:

  • for 循环在我看来很好,实际上会执行四次。那么你的问题到底是什么?
  • 为什么要在 for 循环结构周围放置 **
  • 让你的问题更清楚......
  • “无法正常工作”是什么意思?这对这里有经验的开发人员有很大帮助,可以准确地知道什么是错误的——什么不应该发生,什么不应该发生,任何错误消息。另外,你应该说你自己调试了这个,调试的结果是什么。
  • @Shiplu 我想这是尝试使部分代码加粗,但 SO 渲染引擎不支持这一点。我在这里见过很多次了。

标签: c++ for-loop


【解决方案1】:

只需添加switch:

case 'X':
    break;

因为while条件要到下一轮才会执行。

【讨论】:

    【解决方案2】:

    如果问题是

    不应将 X 视为弃票

    答案是添加一个案例:

    case 'X':
         break;
    

    【讨论】:

      【解决方案3】:

      另外,请注意先初始化投票,或者使用 do { } while() 而不是 while { }

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

          在 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;
                  */            
              }
          

          【讨论】:

          • 我需要程序运行循环 4 次,每次存储结果,然后在第四次结束时显示每个候选人的总数。谢谢
          • Goodday Ahmed,我已将 Voters_Still_Present 声明为 int 创建了一个 if 语句。我是新手,所以请原谅。 if (Voters_Still_Present = 1) { cout
          • 请加入聊天室chat.stackoverflow.com/rooms/9327/c。我们可以进一步讨论这个问题。
          • 嗨 Ahmed,我现在在聊天室里
          猜你喜欢
          • 2017-11-11
          • 1970-01-01
          • 1970-01-01
          • 2020-01-30
          • 2013-06-26
          • 2016-01-01
          • 2021-09-26
          • 2020-10-27
          • 2012-01-02
          相关资源
          最近更新 更多