2017-10-19 6 views
0

ネストループを使用してこの図形を作成したいとします。私のコードを持つしかし ネストループを使用して図形を作成

$**** 
*$*** 
**$** 
***$* 
****$ 

int counter = 6; 
for (row = 0; row <= counter; row ++) 
{ 
    cout << "$"; 
    for (column = 1; column <= row ; column++) 
    { 
    cout << "*"; 
    } 
    cout << endl;  
} 

結果は次のとおりです。

$* 
$** 
$*** 
$**** 
$***** 
$****** 

がどのように各ループ内のすべてのループや移動位置に$を作成するのですか?

+0

内側と外側のループインデックスが等しいかどうかをチェックし、 '$'を出力しなければ '*'を出力します。すべての 'cout'を内側のループの内側にします。また、(column = 1; column <= row; column ++) '=>' for(column = 1; column <= counter; column ++) 'の両方のループを同じ回数実行します。 –

+0

@Saramali、それは宿題ではありません。参考書からの質問です。私は入れ子になったループを練習したい。 – engkhsky

+0

*どのように各ループに$を作り、各ループの位置を移動させるのですか?* - 宿題のプログラミングの目標は、あなた自身がこれを理解し、答えを出すためにここで質問する適性がある場合です。そうでなければ、あなたが遭遇するプログラミング上の問題は、ここで尋ねて答えを得ることだけです。それはプログラムを書く方法を学ぶ方法ではありません。 – PaulMcKenzie

答えて

1

印刷する「*」の量のみを変更しています。あなたが望むものを達成するために、このようなものを試すことができます。

int count = 0; 
while(count < 5){ 
    for(int i = 0; i < 5; ++i){ 
     if(i == count){ 
       cout << "$"; 
     } else{ 
       cout << "*"; 
     } 
    } 
    cout << endl; 
    count++; 
} 
+1

ありがとう!誰かがif elseを使うことについてコメントしたので、私はurの答えを見ずにそれをやった。 – engkhsky

0

コードでは、行番号に従って値が出力されるネストループ条件が正しくありません。ただし、各行の値は同じままです。単なるドル記号は移動し続けるでしょう。また、非常に良いアプローチである行数の入力として整数をとる汎用関数を作成しようとします。ここでは解決策は以下のとおりです。

void createDollarStars(int counter) 
{ 
    int row,column; 

    for (row = 0; row < counter; row ++) 
    { 
    for (column = 0; column < counter ; column++) 
    { 
     if(row == column) 
     { 
      cout<<"$"; 
     } 
     else 
     { 
      cout << "*"; 
     } 
    } 
     cout << endl;  
    } 
} 
-1

私は、これはあなたが望むものを、内側のループと外側のループ回数が同じで、他の例の印刷 "であるときは、「$」を印刷する必要がある

for(int i=0;i<n;i++){ 
    for(int j=0;j<n;j++){ 
     if(i==j) 
     cout<<"$"; 
     else cout<<"*"; 
    } 
    cout<<"\n"; 
} 
0

だと思います* '。このコードはあなたのために働くはずです