我试图计算运行某项测试的成功结果的数量,该测试只有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;
答案 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中。删除其中一个将解决问题。