1

ループを含む C++ でアスタリスク * を使用して V を作成する必要があります。

例: http://i.imgur.com/4QxnsKz.png

誰でもそれがどのように行われたか知っていますか?

#include <iostream>
#include <iomanip>

using namespace std;

int main()
{
    for(int i = 10; i <= 20; i++){
        cout << setw(i);
        cout << "***" << endl;
    }
    for(int i = 30; i >= 20; i--){
        cout << setw(i);
        cout << "***" << endl;
    }
    return 0;
}

ここでの私の主な問題は、スペースを作成する方法だと思いますか? forループ中にそれらを動的に増やす方法は?

4

2 に答える 2

1

最高ではありませんが、私は試します:

int main()
{
    for (int i = 0, s = 17, w = 4; i < 10; ++i, s -= 2, ++w)
    {
        std::string space;
        if (s >= 0)
            space.assign(s, ' ');
        else
            space = "";
        std::cout << std::right
                  << std::setw(w)
                  << "***" << space << ((i != 9) ?  "***\n" : "**");
    }
}
于 2013-11-01T01:12:39.890 に答える
1
for (int i=0;i<10;i++) {
    for (int j=0; j<i*2; j++)
        cout << " ";
    cout << "***";

    for (int j=0; j<2+(10-1-i)*4; j++)
        cout << " ";

    cout << "***" << endl;
}

1 行目から最後までの星の前のスペースは、0、2、4、6、.... lineNumber*2 = i*2 回です。

10 行あります。最後から最初までの星の間のスペースは次のとおりです: 2、6、10、14、....定数として 2 + (totalNumberofLines-1-currentline)*4 です。2 はスペースの開始数です。4は範囲です。最後の行が 9 で 10-9=1 であるため、ここでは -1 です。ループカウンターの開始点に依存します。

それが説明できることを願っています。

于 2013-11-01T00:43:22.280 に答える