首页 > 解决方案 > 绘制旋转三角形

问题描述

我试图弄清楚如何更改显示如下的三角形:

  x  
 xxx  
xxxxx 

一个看起来像这样的:

  x     
 xx
xxx 
 xx
  x

 x
 xx
 xxx
 xx
 x

它应该有一个用户输入,可以像这样改变三角形的大小:

        cout << "Please enter a size for the shape: ";
        cin >> size;

        for (int row = 1; row <= size; ++row)

        {
            for (int column = 1; column <= row; ++column)
                cout << '*';
            cout << endl;
        }

抱歉任何格式错误,一般来说仍然是编程新手。干杯。

标签: c++

解决方案


试着把这个问题分解成更简单的问题。与其考虑如何打印整个三角形,不如考虑每行具有什么属性和模式。

关于第一个三角

  x  
 xxx  
xxxxx 

您会注意到它与 y 轴对称。这样您就可以打印以下两份:

  x
 xx
xxx

它更容易打印。您还注意到每一行i的组成如下: size-i空格后跟i连续x,允许您通过打印多个空格首先打印单行,然后是多个空格,x然后再打印其他空格。

尝试以下方法并针对您提到的其他情况进行调整:

int main()
{
     int size = 0;
     cout << "Please enter a size for the shape: ";
     cin >> size;
     cout << endl;
     for (int row = 1; row <= size; ++row)
     {
         //-------first half
         //spaces
         for (int column = 1; column <= size-row; ++column)
             cout<<" ";
         //points
         for (int column = 1; column <= row ; ++column)
             cout << '*';
         //-------second half
         //points
         for (int column = 1; column <= row-1 ; ++column)
             cout << '*';
         //spaces
         for (int column = 1; column <= size-row; ++column)
             cout<<" ";

         cout << endl;
     }
    return 0;
}

在这里试试


推荐阅读