【问题标题】:C++ If loop inside a for loop. LimitsC++ If 循环在 for 循环中。限制
【发布时间】:2013-03-20 21:58:46
【问题描述】:

我有这个代码。

 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 循环,但它不起作用,我尝试的任何其他方法都只给了我一个值。有什么帮助吗?

【问题讨论】:

  • 你放在循环中的if 是什么样的?
  • If Ynew2
  • if(Ynew &lt;= 310) cout &lt;&lt; ... 应该可以工作并防止显示大于 310 的值大于。另一方面,大于 -310 的值仍会显示。
  • 我会在哪里完成循环呢? (对于 If 函数)我上面的代码几乎相同,可以完美运行,但没有限制。只是似乎无法解决这个问题
  • 如果得到的值不在 (-310, 310) 范围内,是否要立即退出循环?

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


【解决方案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(如果您有适当的using 声明,则仅使用endl)。

【讨论】:

  • 好的,我试过你的代码。我遇到的问题是它只显示 3 个值而不是我要求的 10 个(当我将 n 声明为 10 时)。这仅仅是因为只有 3 个值没有被限制抵消吗?好的,会的,避免\n的原因是什么?
  • 正确 - 只有三个 Ynew2 的值在 [-310, 310] 范围内,其余的被丢弃。原因是endl 是插入新行的适当方式(例如,某些终端可能需要\r\n 而不是\n)并执行其他工作,包括刷新内部缓冲区等。跨度>
  • 非常感谢,非常有帮助。将更改\n。再次感谢!
  • 我如何将这些结果放入方程并为每个点生成结果?另一个增量?
  • 我不关注?你到底想达到什么目的?使用 [-310, 310] 范围内的结果?
【解决方案2】:
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<<")"; 
}

【讨论】:

  • 这样显示指定数量的值好像没有?
  • 我想这取决于当值超出您设置的限制时您想要发生的情况。你想要的行为是什么?
【解决方案3】:
   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<<")"; 
   }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-30
    • 1970-01-01
    • 2021-07-30
    • 1970-01-01
    • 1970-01-01
    • 2018-03-28
    • 2017-08-02
    • 2019-12-04
    相关资源
    最近更新 更多