嵌套循环,在C ++赋值的介绍中向后移动

时间:2012-03-13 18:28:49

标签: c++ loops nested-loops

更新:谢谢所有试图提供帮助的人。我很感激你的时间。正如你在评论中所看到的那样,我将其标记为答案和我对它的回应,看来我们的讲座已经落后了几个星期......或者我可能过早地通过以前的实验室而过早地开始这个课程。无论哪种方式,我都得到了一个解决方案,我理解为什么它有效,我发现它比复制和粘贴更有价值,只是为了完成任务。

更新2 :我的教授给了我一个提示解决方案,只使用循环而没有数组。这是我用他的提示想出的新内容:

#include <iostream>
#include <cmath>

using namespace std;

int main()
{
    for (int i = 0; i < 13; i++)
    {
        for (int j = 0; j < min(i, 12 - i); j++)
        {
            for (int k = 0; k < pow(2.0, j); k++)
            {
                cout << "*";
            }
        }
        cout << endl;
    }
 }

输出:

*
***
*******
***************
*******************************
***************************************************************
*******************************
***************
*******
***
*

原帖:

我有第一部分,现在我只需要反向打印这些星号,这样就形成了一个横向三角形。我已经在这几天了,我无法理解。我们只能在程序中使用星号一次。这是我到目前为止所做的:

#include <iostream>
#include <cmath>

using namespace std;

int main()
{
    for (int i = 0; i < 7; i++)
    {
        for (int j = 0; j < pow(2.0, i); j++)
        {
            cout << "*";
        }
        cout << endl;
    }
}

输出:

*
**
****
********
****************
********************************
****************************************************************

我最接近解决这个问题的是在它下面显示另一排星星,但它们的长度都相同。有时候我会创建一个无限循环的星号墙,有时候我会在几十行中显示一个看似随机的星号。这让我疯了。

4 个答案:

答案 0 :(得分:1)

将它们存储为字符串(char *),将这些字符串压入堆栈并通过逐个弹出来打印堆栈。瞧!

答案 1 :(得分:1)

由于这是作业,我只给你一半答案。希望你能弄清楚其余部分。

for (int i = -6; i < 7; i++)

答案 2 :(得分:0)

这个怎么样?

#include <iostream>
#include <cmath>
using namespace std;
int main()
{
    int a[] = {0, 1, 2, 3, 4, 5, 6, 5, 4, 3, 2, 1, 0};
    for (int i = 0; i < 13; i++)
    {
        for (int j = 0; j < pow(2.0, a[i]); j++)
        {
            cout << "*";
        }
        cout << endl;
    }
}

还是这个?

#include <iostream>
#include <cmath>
using namespace std;
int main()
{
    for (int i = -6; i < 7; i++)
    {
        for (int j = 0; j < pow(2.0, 6 - (i < 0 ? -i : i)); j++)
        {
            cout << "*";
        }
        cout << endl;
    }
}

答案 3 :(得分:0)

我从for (int i = 0; i < 13; i++)

开始

然后使用映射

的函数f(x)
 0->0
 1->1
...
 5->5
 6->6
 7->5
 8->4
...
12->0

以便您使用嵌套循环:

for (int j = 0; j < f(i); j++)