如何为上下范围执行嵌套for循环?

时间:2015-05-12 00:30:53

标签: c++ for-loop

我如何创建一个程序,让用户输入数据,然后让程序从1输入到他们输入的数字,然后从他们输入的数字到1,它必须是向上和向下,但是像这样:

它从1开始,然后在另一条线上变为1和2(没有空格),然后在该线之后变为1,2和3,没有空格并继续在每行上添加数字直到它到达你输入代码的数字,然后从你输入的数字返回并返回到一个与计数相同的方式,但通过使用嵌套的FOR循环下降。

   #include <iostream>
#include <iomanip>
using namespace std;



int main()
{
    int  row, col;
    char myCh;

    cout << "Please enter the number you wish to count up to: ";
    cin >> myCh;

    for(row = 1; row <= myCh; row ++)
    {
        cout << "\n";

        for(col = 1; col <= row; col ++)
        {

            cout << myCh;

        }
    }

    for(row = 1; row >= myCh; row --)
    {
        cout << "\n";

        for(col = 1; col >= row; col --)
        {

            cout << myCh;

        }


    }
    cout << "\n\n\n";
    system("Pause");
    return 0;
}

这变为五角形的三角形,我希望它们能够计入用户输入的任何数量,并从用户的输入减少到1。

1 个答案:

答案 0 :(得分:1)

这是N == 12的示例输出:

1
12
123
1234
12345
123456
1234567
12345678
123456789
12345678910
1234567891011
123456789101112

你注意到任何模式吗?

我看到的一种模式是有12行或迭代。嗯,看起来像第一个或外部循环从1到12(包括)。

其他模式不是那么明显,所以让我们注释。 []中的数字是外部for循环中的行号或索引:

   [ 1]1
    [ 2]12
    [ 3]123
    [ 4]1234
    [ 5]12345
    [ 6]123456
    [ 7]1234567
    [ 8]12345678
    [ 9]123456789
    [10]12345678910
    [11]1234567891011
    [12]123456789101112

嗯,对于每个索引,每行中的数字从1到包含索引。

第一个分析说你需要一个for循环。因为我不知道如何提示用户,所以我会为限制设置一个固定数字。我正在查找for循环...

好的,让我们使用一些变量名称,例如rowvalue

const unsigned int limit = 12U;
unsigned int row;
for (row = 1; row <= limit; ++row)
{
  std::cout << "[" << row << "]" << endl;
}

此循环将打印&#34;行号&#34;在[]内,与上面的第二个分析一样。

请注意,上面的{表示要在for语句中为每个循环执行一个或多个语句。 }表示要在循环中执行的语句的结束。

因此,您需要打印每个值,而不是打印行号。对我来说听起来像是另一个for循环。正如您的评论所要求的,如何让它回归到一个。好吧,这是内部for循环中初始化的工作。

const unsigned int limit = 12U;
unsigned int row;
for (row = 1; row <= limit; ++limit)
{
  // Now, a brand new for loop to print the values.
  for (unsigned int value = ???; value <= ???; ++value)
  {
    std::cout << value;
  }
}

那么,您可以初始化value以正确打印此三角形?

什么是value与表示行结束的比较?

内部for循环到将回车返回到新行提供行之后需要发生什么一个人?

尝试使用调试器,看看会发生什么。你会感到惊讶!