2017-10-27 10 views
0

私はC++の中間のために勉強していますが、レビューの問題の1つはネストループを使って菱形を印刷しようとしています。ユーザは、最も広い行がどのくらい幅広く、どのような文字がダイヤモンドから作られるかを決定します。似たような多くの質問が既に出されていることを知っていますが、この問題は私が見つけることができた例とは異なり、私はそれらの例を理解していません。それはネストされたループになります。だから私はここに来ると思った。C++でユーザが決めた幅に基づいてダイヤモンドを印刷しようとしています

私は家庭教師と協力して、私たちは次のコードを思い付いた:変数widthは、ユーザによって入力された3より大きい正の整数である

for (x = 1; x <= width; x += 2) 
{ 
    string wSpace; 
    string charSpace; 

    cout << wSpace.assign(row, '#'); 
    cout << charSpace.assign(x, character) << endl; 

    row--; 
} 

。 このコードは、ダイヤモンドの上半分と最も幅の広い行を生成します。

このコードの唯一の問題は、何が起こっているのか分かりません。彼は.assign()機能を使用しましたが、私はそれが何であるか、またはそれがどのように機能しているのかを理解していません。ここでどのように機能しているのですか? .assign()が何をしているか分かっていれば、このコードと問題をよりよく理解できるように感じます。

+0

[ここ](http://en.cppreference.com/w/cpp/string/basic_string/assign)から特にわからないことはありますか? – user0042

+0

私はC++の学生の紹介を10週間行っていますので、正直言って、そのページのほとんど。私はあなたがそれにリンクする前にそれを知っていませんでしたが、私はどのような引数がどのような引数を取るかを示す例であると想定している表記を理解していません。たとえば、 "basic_string &&"とはどういう意味ですか? – Kronimiciad

答えて

1

docsによれば、あなたはfill(5)を使用しています。これはドキュメント内に記載されているように、このバージョンのassign()Replaces the current value by n consecutive copies of character c.の場合、nxまたはrowとなり、文字はcharacterまたは'#'となります。したがって、最初の使用では、wSpaceは今や'#'文字の文字列であり、rowの文字列であり、2番目のインスタンスでは、charSpacecharacter文字の文字列であると言っています。x回繰り返します。

+0

私は、今理解しています。どうもありがとう! – Kronimiciad

関連する問題