これまでのところ、あなたのコードはこれを生成します:
*
**
***
****
*****
******
*******
********
*********
**********
これはかなり良い直角三角形のように見えるので、正しい軌道に乗っていると思います。上記の画像を作成するには、いくつかのスペースを挿入し、すべての行が同じ長さになるようにする必要があります。よろしければ、あなたが求めていることは、ループが 1 つだけのほうがはるかに簡単だと思います。これを試して:
#include <iostream>
#include <string>
using std::cout;
using std::endl;
using std::string;
int main() {
int height = 4;
int line = height * 4;
for( int i = height; i > 0; --i ){
string stars (i, '*');
int space = line - (i * 2);
string spaces (space, ' ');
cout << stars << spaces << stars << endl;
}
}
このコードは以下を生成します。
**** ****
*** ***
** **
* *
上の例よりもいくつかのスペースがあるようですが、必要なスペースの最大長のループの前に変数を追加し、ループごとに2ずつ減らすことで修正できます。