C++的嵌套循环
Nested loop for C++
我必须编写一个程序来完成一个算法,并且每行最多有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
作为留给读者练习。
相关文章:
- 如何声明特征矩阵,然后通过嵌套循环初始化它
- 了解嵌套循环打印星号图案
- 无法掌握嵌套循环的写作技巧
- 在 c++ 中实现嵌套循环的更短方法吗?
- 从嵌套循环中的 std::list 中删除将返回访问冲突
- 毕达哥拉斯三重嵌套循环误解
- T(n) 表示嵌套循环
- 2 个嵌套循环的时间复杂度
- 嵌套循环背后的逻辑
- 使用 %s C++嵌套循环
- 嵌套循环和重复迭代器
- 如何在 c++ 下使用嵌套循环和正则表达式降低时间复杂度?
- C++在乘法图中放置随机值(嵌套循环)
- 如何使用 OpenMP 减少嵌套循环?
- 为什么使用 2 个嵌套循环 O(n^2) 复杂度来解决二和问题,当只改变循环计数器逻辑时运行得更快?
- 学习嵌套循环C++与示例混淆
- 如何在CUDA中嵌套循环
- std::vector上的嵌套循环
- 具有动态数组分配的OpenMP嵌套循环
- 两个嵌套循环的运行时间复杂性:二次型还是线性