C ++如果在for循环中循环。范围

时间:2013-03-20 21:58:47

标签: c++ loops if-statement for-loop

我有这个代码。

 for(int j=0; j<=n; j++) {
     Xnew2 = j*(Y+R2)/n;
     Ynew2 = pow((((Y+R2)*(Y+R2)) - (Xnew2*Xnew2)), 0.5);
     cout<<"\n("<<Xnew2<<","<<Ynew2<<")"; 
 }

我希望显示所有值,但我还想对显示的值创建限制,以确保Ynew2不能高于310或低于-310。半径为482.7mm,这是当前值的数字。

我该怎么做?我尝试在其中放置一个if循环,但它不起作用,我尝试的任何其他东西只给了我一个值。有什么帮助吗?

3 个答案:

答案 0 :(得分:1)

试试这个:

for(int j=0; j<=n; j++) {
    Xnew2 = j*(Y+R2)/n;
    Ynew2 = pow((((Y+R2)*(Y+R2)) - (Xnew2*Xnew2)), 0.5);

    if(abs(Ynew2) <= 310))
        cout<<"\n("<<Xnew2<<","<<Ynew2<<")"; 
}

我们使用abs函数来获取Ynew2变量的绝对值,并将其与310进行比较。如果它小于或等于310,我们会显示该点,否则,我们不会“T

旁注:如果您有适当的\n声明,则应避免使用std::endl并使用endl(或仅使用using

答案 1 :(得分:0)

for(int j=0; j<=n; j++)
{
    Xnew2 = j*(Y+R2)/n;
    Ynew2 = pow((((Y+R2)*(Y+R2)) - (Xnew2*Xnew2)), 0.5);
    if (Ynew2 < 310 && Ynew2 > -310)
        cout<<"\n("<<Xnew2<<","<<Ynew2<<")"; 
}

答案 2 :(得分:0)

   const int YLIMIT = 310;
   for(int j=0; j<=n; j++) {
       Xnew2 = j*(Y+R2)/n;
       int Ynew2Raw = pow((((Y+R2)*(Y+R2)) - (Xnew2*Xnew2)), 0.5);
       int Ysign = Ynew2Raw >= 0 ? 1 : -1;
       int limitedY2 = std::min(abs(Ynew2Raw, YLIMIT));
       Ynew2 = Ysign * limtedY2;

       cout<<"\n("<<Xnew2<<","<<Ynew2<<")"; 
   }