绘制旋转的三角形

时间:2018-10-31 08:05:05

标签: c++

我正在尝试找出如何更改显示如下的三角形:

  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;
        }

很抱歉出现任何格式错误,这对于一般编程人员还是一个新手。干杯。

4 个答案:

答案 0 :(得分:1)

尝试将此问题分解为更简单的问题。与其考虑如何打印整个三角形,不如考虑每行的属性和图案是什么。

关于第一个tringle

  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;
}

Try it here

答案 1 :(得分:0)

下面的代码绘制带有星星的三角形。高度是三角形的高度,长度是底部的字符数。

#include <iostream>
using namespace std;

int main()
{
    const int Length = 10;
    const int Height=5;

    for (int i = 0; i < Height; i++) 
    {

        for (int j = 0; j <Length/2-i; j++)
        {

            cout << " ";


        }

        int NumberOfStars=2*i+1;
        for (int j = 0; j < NumberOfStars; j++)
        {
            cout << "*";
        }


        cout <<  endl;
    }

     return 0;

 }

Run the code

答案 2 :(得分:0)

您应将*分开输出。

以下code可以在三种情况下工作:

#include<iostream>

int main(){

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

    std::cout << "case 1: " << std::endl << std::endl;
    for (int row = 0; row < size; ++row) {
        for (int col = 0; col < size - 1 - row; ++col)
            std::cout << ' ';
        for (int col = 0; col < 2 * row + 1; ++col)
            std::cout << "*";
        std::cout << std::endl;
    }

    std::cout << std::endl << "case 2: " << std::endl << std::endl;
    for (int row = 0; row < size; ++row) {
        for (int col = 0; col < size - 1 - row; ++col)
            std::cout << ' ';
        for (int col = 0; col < row + 1; ++col)
            std::cout << "*";
        std::cout << std::endl;
    }

    for (int row = 1; row < size; ++row) {
        for (int col = 0; col < row; ++col)
            std::cout << ' ';
        for (int col = 0; col < size - row; ++col)
            std::cout << "*";
        std::cout << std::endl;
    }

    std::cout << std::endl << "case 3: " << std::endl << std::endl;
    for (int row = 0; row < size; ++row) {
        for (int col = 0; col < row + 1; ++col)
            std::cout << "*";
        std::cout << std::endl;
    }

    for (int row = 1; row < size; ++row) {
        for (int col = 0; col < size - row; ++col)
            std::cout << "*";
        std::cout << std::endl;
    }

    return 0;
}

答案 3 :(得分:0)

以下是假设3大小的不同类型的输出:

以下代码将显示输出:

*
**
***
for(int i = 1; i <= size; i++){
    for(int j = 1; j <= i; j++)
        std::cout<<"*";
    std::cout<<std::endl;
}

如果要打印如下所示的三角形,请使用以下代码:

  * 
 ***
***** 
for(int i = 0; i < size; i++){
    for(int j = size - i - 1; j > 0; j --)
        std::cout<<" ";
    for(int k = (i * 2) + 1; k > 0; k--)
        std::cout<<"*";
    std::cout<<std::endl;
}

最后按照您的要求打印输出,然后使用以下代码:

  *
 **
***
 **
  *

*
**
***
**
*
for(int i = 1; i <= size; i++){
    for(int j = size - i; j > 0; j--)
        std::cout<<" ";
    for(int k = 1; k <= i; k++)
        std::cout<<"*";
    std::cout<<std::endl;
}
for(int i = size - 1; i > 0; i--){
    for(int j = size - i; j > 0; j--)
        std::cout<<" ";
    for(int k = 1; k <= i; k++)
        std::cout<<"*";
    std::cout<<std::endl;
}
std::cout<<std::endl<<std::endl;
for(int i = 1; i <= size; i++){
    for(int j = 1; j <= i; j++)
        std::cout<<"*";
    std::cout<<std::endl;
}
for(int i = size - 1; i > 0; i--){
    for(int j = 1; j <= i; j++)
        std::cout<<"*";
    std::cout<<std::endl;
}

希望有帮助。