C++的嵌套循环

Nested loop for C++

本文关键字:嵌套循环 C++      更新时间:2023-10-16

我必须编写一个程序来完成一个算法,并且每行最多有10个项。我遇到了一个问题1)当循环达到1时停止循环,2)如何为下一个递增的数字继续循环。以下是我应该做的和我所拥有的。我应该得到一个低期限,高期限和增量。第一次计算从短期开始,并完成,当完成时,它应该循环回到短期+增量,然后重新进行计算。它应该循环直到达到高数值并完成计算。如果不仔细阅读所有代码,我就会遇到麻烦。

 void ulamCalc(double numOne, double numTwo,
               double increment)
 {
     int countOne, countTwo;
     countTwo = 1;
     do
     {
         for(count = 1; count <= 10; count++)
         {
             cout << setw(7) << numOne;
             if(numOne == 1)
             {
                 cout<< endl;
                 cout << OUTPUT_TERM << countTwo;
                 cout << endl << endl;
             }
                     countTwo++;
             if(static_cast<int>(numOne) % 2 == 0)
                 numOne = numOne / 2;
             else if(static_cast<int>(numOne) % 2 == 1)
                 numOne = (numOne * 3) + 1;         
         }
         cout << endl;
     } while(numOne >= 1);

该循环在1处停止并输出项数,但随后是将重复最后3次计算的其他行。有人能帮我吗?

这是一项足够简单的任务,但这里有一些想法可以帮助简化编写:

  • 给变量起个更好的名字。例如lowterm highterm而不是numOne numTwo
  • 使用int而不是double。由于您显示的输入和示例输出都是整数和整数,因此没有真正的理由在这里使用double
  • 将主要步骤分解为单独的功能

下面是一个让你开始的例子:

void ulamCalc(int low, int high, int inc)
{
  for(int term = low; term < high; term += inc)
  {
    process_term(term);
  }
}
int main()
{
  ulamCalc(100, 500, 200);
}

输出:

100 50 25 76 38 19 58 29 88 44 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 
300 150 75 226 113 340 170 85 256 128 64 32 16 8 4 2 

我将把process_term作为留给读者练习