1

我有这个代码。

 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.7 毫米,这是当前数值的数值。

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

4

3 回答 3

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

旁注:您应该避免使用\n和使用std::endl(或者endl如果您有适当的using声明)。

于 2013-03-20T22:44:34.803 回答
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<<")"; 
}
于 2013-03-20T22:00:57.833 回答
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<<")"; 
   }
于 2013-03-20T23:43:28.200 回答