@space_voyagerの代わりに、このコードは動的サイズをサポートしていますので、サイズで定義できる大きさにすることができます。
アルゴリズムは、ここでは現在のインデックスまたは反復が(この場合、11はプログラム10である)の中間にある場合
- チェックです。
- trueの場合、0から現在のIのインデックスを反復します。
- falseの場合(つまり、現在のインデックスが中央よりも大きいことを意味します)、jをサイズの小さい順に反復します。
どのようにサイズ - 私は動作しますか?
最初の反復では(I> 10、したがってI = 11の場合)サイズ - I = 21-11となります。あなたは10になるので、出力は10回印刷されます。二度目はI = 12になります。行くにつれて結果は減少します。
int main(){
int size = 21;
for(int i=1;i<size;i++){
if(i <=size/2)
{
for(int j=0;j<i;j++)
{
cout << "*";
}
cout << endl;
}
else if (i > size/2)
{
for(int j=size-i; j>0;j--)
{
cout << "*";
}
cout << endl;
}
}
return 0;
}
出力
*
**
***
****
*****
******
*******
********
*********
**********
**********
*********
********
*******
******
*****
****
***
**
*
編集
space_voyagerを1としてコピー貼り付けコードを持つことがベストプラクティスではありません、と述べました。 @Twistaがここに更新されたコードは(彼に似て、私は唯一の動的な部分を追加しました。サイズの値を変更し、あなたはすべてを変える)です
int main(){
int size = 20;
for(int i=1;i<size;i++){
int k;
if(i <=size/2)
{
k = i;
}
else if (i > size/2)
{
k = size-i;
}
for(int j=0; j<k; j++)
{
cout << "*";
}
cout << endl;
}
return 0;
}
することは、あなたのニーズを満たしている場合には、答えをupvoteし、受け入れることを忘れないでください:) –
説明が少し必要ですが、説明変数名で簡単に解決できます。 – user4581301