ヒント
考え方:いきなり大きさnのプログラムを考えるのではなく,具体的な大きさ7とか,大きさ9のプログラムを考え,それをよく観察して,一般的な大きさnのプログラムに発展させる。
1.まず,大きさ固定の図形(n=7)から考えよう
*******
******
*****
****
***
**
*まずまともに考えてみる
「*」を7個書いて改行する
「*」を6個書いて改行する
「*」を5個書いて改行する
「*」を4個書いて改行する
「*」を3個書いて改行する
「*」を2個書いて改行する
「*」を1個書いて改行する
全部で7行であり,同じような記述なので
for (i=0; i<7; i++) {
「*」を○個書いて改行する
}
という形になることに気づく。
繰り返し時のiの値は,0,1,2,3,4,5,6のように変化する。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個書いて改行する
「*」を8個書いて改行する
「*」を7個書いて改行する
「*」を6個書いて改行する
「*」を5個書いて改行する
「*」を4個書いて改行する
「*」を3個書いて改行する
「*」を2個書いて改行する
「*」を1個書いて改行する
全部で9行なので
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)個書いて改行する
}
(3.1) n=7の時には7行となりfor (i=0; i<7; i++) {
「*」を(7-i)個書いて改行する
}n=9の時には9行となり
for (i=0; i<9; i++) {
「*」を(9-i)個書いて改行する
}
(3.2) 同じ規則で考えると,n=5の時には5行となりfor (i=0; i<5; i++) {
「*」を(5-i)個書いて改行する
}なる。
(3.3) またn=11の時には6行となる
for (i=0; i<11; i++) {
「*」を(11-i)個書いて改行する
}となる。
(3.4) これをまとめると一般にnの場合は
for (i=0; i<n; i++) {
「*」を(n-i)個書いて改行する
}とすればよい。