获得所需的最少射击次数,以使目标超过射击次数是给定的百分比

时间:2018-08-10 14:13:02

标签: c++ loops c++11 while-loop

我在理解为什么我用C ++编写的一个极其简单的程序不断循环的过程中遇到了一些困难。我将首先描述眼前的问题,只是要检查我的解决方案是否不正确,然后再编写代码:

足球运动员的投篮效率是 进球是他职业生涯所有进球的总得分。它是介于0和100之间的有理数, 四舍五入到小数点后一位。举例来说, 射门得分7次,进球3次 效率42.9。 考虑到球员的投篮效率,我们想知道 是达到目标所需的最低射门次数 数字(必须大于0)。

我想到的是,如果p是给定的百分比,那么为了获得最小的射击次数n,必须满足关系n p <= n,因为n p为进球总数达到n个。

我已经编写了以下程序:

int main(){
    float efficiency;
    cin >> efficiency;
    int i = 1;
    float tries = i*efficiency;

    while(tries > i){
        i++;
        tries = i*efficiency;
    }

    cout << i << endl;
    return 0;
}

该程序永远不会终止,因为它会不断在内部循环,有关任何错误的建议将不胜感激。

1 个答案:

答案 0 :(得分:0)

您将i递增后的效率相乘。这意味着效率将比i快得多,因为当i增加1时,效率将增加(i + 1)倍,最终比i大得多。