【发布时间】:2015-03-05 19:27:56
【问题描述】:
我编写了一个程序,它接受两个输入——汽车的面积和摩擦系数——作为参数,然后计算阻力。
如果用户输入了无效的摩擦值(必须是0.2 <= friction <= 0.5),else 条件会正常工作。
但是,当我输入有效的摩擦值时,它会进入一个无限循环,并且永远不会给我任何错误。
这是我的代码。
double area, friction;
cout << "lutfen surtunen yuzeyi giriniz: \n";
cin >> area;
cout << "lutfen surtunme katsayisini giriniz: \n";
cin >> friction;
calc_force(velocity, area, friction);
// My function
void calc_force(int velocity, double area, double friction)
{
double force;
double seccade = friction;
if(0.2 <= seccade && seccade <= 0.5 ) { // if statement does not work
force = (0.0615)*area*friction*velocity*velocity;
cout << "Velocity\t\t Drag Coefficien\t\t Area\t\t Force\n";
cout << "\t\t" << velocity << "\t\t" << seccade << "\t\t" << area << "\t\t" << force << "\n";
velocity+=5;
if(velocity>40) return ;
cout << "lutfen surtunme katsayisini giriniz: \n";
cin >> friction;
cout << "lutfen surtunen yuzeyi giriniz: \n";
cin >> area;
calc_force(velocity, area, friction);
} else { // this works
cout << "lutfen surtunme katsayisini dogru giriniz: \n";
cin >> friction;
cout << "lutfen surtunen yuzeyi giriniz: \n";
cin >> area;
calc_force(velocity, area, friction);
}
}
velocity 定义为const int。当我调用和定义函数时,我有int friction 到double friction。我已按照以下建议更正了其他数据类型。我使函数递归,因为我希望它重复。
【问题讨论】:
-
friction是一个int(在calc_force中),所以它永远不能介于0.2和0.5之间。 -
请,下一次,也减少你的代码。它将帮助您在提出不好的问题之前了解问题。
-
再读一遍,@BrianGradin。这是
0.2 <= x,而不是x <= 0.2。 -
@crashmstr 谢谢你告诉我这个错误,我编辑了程序但仍然得到相同的结果
-
@SemirUmutKurt 1. 我没有看到终止条件(
calc_force怎么知道何时不调用自己)。 2. 将velocity增加5如何改变friction,因为检查的唯一条件是摩擦?
标签: c++ recursion infinite-loop