在C ++中使用for循环的Ribbon形状

时间:2017-12-04 23:09:47

标签: c++ loops for-loop

我一直在尝试在c ++中为循环组合创建不同的循环组合,但我似乎找不到正确的。

我希望我的输出看起来像这样:

Ribbon

如何在不使用数组的情况下显示它?

编辑:我试过这样但我不能在另一端复制它。到目前为止,这是我得到的最接近的输出。

for(int i = 0; i < 6; i++)
{
    cout<<"*";

    for(int j = 5; j > i; j--)
    {
        cout<<" ";
    }

    for(int k = 0; k <= i; k++)
    {
        cout<<"*";
    }

    cout<<endl;

}

输出:

Fail ribbon

2 个答案:

答案 0 :(得分:0)

你有九条线;让我们将它们编号为0到8.行号 n 包含:

  • 1 + (4 - abs(4 - n))星号(1,2,3,4,5,4,3,2,1)
  • 2 * abs (4 - n)个空格(8,6,4,2,0,2,4,6,8)
  • 1 + (4 - abs(4 - n))星号(1,2,3,4,5,4,3,2,1)

答案 1 :(得分:-2)

一种选择是增加每行上的星数,然后在到达中点后返回。

void printChar(char c, int count)
{
    for (int i = 0; i < count; i++)
        std::cout << c;
}

int main()
{
    const int len = 10;

    int stars = 0;

    while (++stars <= len / 2)
    {
        int spaces = len - stars * 2;

        printChar('*', stars);
        printChar(' ', spaces);
        printChar('*', stars);
        std::cout << "\n";
    }
    stars--;
    while (--stars > 0)
    {
        int spaces = len - stars * 2;

        printChar('*', stars);
        printChar(' ', spaces);
        printChar('*', stars);
        std::cout << "\n";
    }

    return 0;
}

void printChar(char c, int count) { for (int i = 0; i < count; i++) std::cout << c; } int main() { const int len = 10; int stars = 0; while (++stars <= len / 2) { int spaces = len - stars * 2; printChar('*', stars); printChar(' ', spaces); printChar('*', stars); std::cout << "\n"; } stars--; while (--stars > 0) { int spaces = len - stars * 2; printChar('*', stars); printChar(' ', spaces); printChar('*', stars); std::cout << "\n"; } return 0; }