代码之家  ›  专栏  ›  技术社区  ›  mahmoudalsof

C++星图金字塔

c++
  •  -1
  • mahmoudalsof  · 技术社区  · 6 年前

    *
    * *
    * * *
    * *
    *
    

    .. 但我想不通。

    1. i变量表示行号。
    2. j变量表示列号。

    我可以用上面的逻辑创建一个递增的三角形模式,但是我不知道如何开始递减模式来形成一个金字塔。

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        int i;
        int j;
        for (i = 1; i <= 4; i++)
        {
            for (j = 1; j < i; j++)
            {
                cout << "*";
            }
            cout << endl;
            for (i; i <= 6; i++)
            {
                for (j; j <= 0; j--)
                {
                    cout << "*";
                }
                cout << endl;
            }
        }
        return 0;
    }
    

    我真的很想得到一些指导。

    2 回复  |  直到 6 年前
        1
  •  0
  •   Swordfish    6 年前
    for (i; i <= 6; i++)
    

    提到一个变量是没有效果的( i )在 init-statement 如果存在声明或赋值,则返回for循环。

    #include <iostream>
    
    int main()
    {
        int width = 8;
    
        // raising flank:
        for (int i = 0; i < width; ++i) {
            for (int k = 0; k <= i; ++k) {
                std::cout << "* ";
            }
            std::cout.put('\n');
        }
    
        // falling flank:
        for (int i = width - 1; i; --i) {
            for (int k = 0; k < i; ++k) {
                std::cout << "* ";
            }
            std::cout.put('\n');
        }
    }
    

    *
    * *
    * * *
    * * * *
    * * * * *
    * * * * * *
    * * * * * * *
    * * * * * * * *
    * * * * * * *
    * * * * * *
    * * * * *
    * * * *
    * * *
    * *
    *
    
        2
  •  -1
  •   FrancescoPenasa    6 年前

    此代码仅在大小为奇数时有效,您需要做一些更改,使其也适用于偶数。

    #include <iostream>
    using namespace std;
    int main(){
      int SIZE = 5;
      for (int i = 0; i < SIZE; i++){
        if (i > ((SIZE/2))){
          for (int j = SIZE; j>i; j--)
            cout << "*";
        }
        else
          for (int j = 0; j<=i; j++)
            cout << "*";
        cout << endl;
      }
    }