ヒント
(1)まず,大きさ固定の図形(n=7)から考えよう
*******
******
*****
****
***
**
*まずまともに考えてみる
「*」を7個書いて改行する
iの値が0,1,2,3,4,5,6の時,「*」を書く個数は7,6,5,4,3,2,1である。
そこで次のように考える
iの値 |
「*」を書く個数 |
0 |
7 |
1 |
6 |
2 |
5 |
3 |
4 |
4 |
3 |
5 |
2 |
6 |
1 |
一般的にiなら |
7-i |
for (i=0; i<7; i++)
{
「*」を(7-i)個書いて改行する
}
(2)次に,大きさ固定の図形(n=9)を考えよう
*********
********
*******
******
*****
****
***
**
*まずまともに考えてみる
「*」を9個書いて改行する
全部で9行なので
「*」を8個書いて改行する
「*」を7個書いて改行する
「*」を6個書いて改行する
「*」を5個書いて改行する
「*」を4個書いて改行する
「*」を3個書いて改行する
「*」を2個書いて改行する
「*」を1個書いて改行する
for (i=0; i<9; i++) {
「*」を○個書いて改行する
}
という形になることに気づく。
繰り返し時のiの値は,0,1,2,3,4,5,6,7,8のように変化する。iの値が0,1,2,3,4,5,6,7,8の時,「*」を書く個数は9,8,7,6,5,4,3,2,1である。
一般的にiのとき,,「*」を書く個数は9-iである。そこで次のように考える
for (i=0; i<9; i++) {
「*」を(9-i)個書いて改行する
}
n=7の時には7行となりfor (i=0; i<7; i++) {
n=9の時には9行となり
「*」を(7-i)個書いて改行する
}for (i=0; i<9; i++) {
「*」を(9-i)個書いて改行する
}
同じ規則で考えると,n=5の時には5行となり
for (i=0; i<5; i++) {
なる。またn=11の時には6行となる
「*」を(5-i)個書いて改行する
}for (i=0; i<11; i++) {
となる。これをまとめると一般にnの場合は
「*」を(11-i)個書いて改行する
}for (i=0; i<n; i++) {
「*」を(n-i)個書いて改行する
}とすればよい。