0

私はこのようなものが欲しい:

****      ****
***        ***
**          **
*            *

私はこれを試しました:

void roadBound() {

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

しかし、それは近くにもありませんでした。助けてください

4

4 に答える 4

1

これまでのところ、あなたのコードはこれを生成します:

*
**
***
****
*****
******
*******
********
*********
**********

これはかなり良い直角三角形のように見えるので、正しい軌道に乗っていると思います。上記の画像を作成するには、いくつかのスペースを挿入し、すべての行が同じ長さになるようにする必要があります。よろしければ、あなたが求めていることは、ループが 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ずつ減らすことで修正できます。

于 2013-12-01T15:43:34.593 に答える
0

これは、別のループ内で 3 つのループを使用します

const int ROW = 4;
const int GAP = 7;

for (int i=ROW, g=GAP; i>=0; i--, g+=2)
{
    for (int j=0; j<i; j++) cout << '*';
    for (int j=0; j<g; j++) cout << ' ';
    for (int j=0; j<i; j++) cout << '*';
    cout << '\n';
}

出力

****      ****
***        ***
**          **
*            *

ライブコード

于 2013-12-01T15:20:28.473 に答える
0

これを試すことができます

int lf=4,md=4, N=4;
for( int i = 1; i<=N; i++ )
{
   for( int j =1; j<=lf; j++ )
      cout<<"*";
    for( int j =1; j<=md; j++ )
      cout<<" ";
    for( int j =1; j<=lf; j++ )
      cout<<"*";
    cout<<"\n";
       lf--;
      md+=2;
}
于 2013-12-01T15:25:26.687 に答える