繁体   English   中英

C ++ if循环位于for循环内。 限度

[英]C++ If loop inside a for loop. Limits

我有这个代码。

 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循环,但是它没有用,而我尝试的其他任何操作仅给了我一个价值。 有什么帮助吗?

尝试这个:

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,则显示该点,否则不显示该点。

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

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<<")"; 
}
   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<<")"; 
   }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM