对于任何计数,循环运行一半

时间:2015-03-09 04:10:29

标签: c++ loops for-loop

我试图计算运行某项测试的成功结果的数量,该测试只有2个结果,成功或失败(下面没有给出测试代码)。 我需要一个循环来运行测试20次并打印出20次成功率。 我不知道为什么,但我的循环只打印输出10次!情况总是如此。当我将结束条件更改为20以外的任何数字时,它仅打印该数字的一半的运行。

附件只是代码的相关部分。这个逻辑有问题吗?我找不到它。

 double successRate = 0; //initialize variable recording total times of successes of test
  for (int count = 1; count <= 20; count++)
    {
        string result = sf(fliptest()); //result of running the test the first time, only equals one of two strings: "success" or "failure"
        if (result =="success")
        {
            successRate++;
            cout << result << endl;
            count++;
        }
        else
        {
            cout << result << endl;
            count++;
        }
    }
 cout << "The % of success is" << (successRate/20)*100 << " %" << endl;

3 个答案:

答案 0 :(得分:1)

您正在for语句和if else块中递增count变量,从for循环或if else块中删除count ++。

这应该有效:

double successRate = 0; //initialize variable recording total times of successes of test
for (int count = 1; count <= 20; count++)
{
    string result = sf(fliptest()); //result of running the test the first time, only equals one of two strings: "success" or "failure"
    if (result =="success")
    {
        successRate++;
        cout << result << endl;
    }
    else
    {
        cout << result << endl;
    }
}
cout << "The % of success is" << (successRate/20)*100 << " %" << endl;

答案 1 :(得分:0)

在if和else条件中删除count ++。它会再次增加计数值,因此它会增加一倍,并且你会在20次中获得一半的输出。

答案 2 :(得分:0)

没有。你的for循环应该运行的时间减少到一半,因为你正在增加&#34; count&#34;两次,一次在for-statement中,一次在for-statement中。删除其中一个将解决问题。