ヒント

考え方:いきなり大きさ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.n=7の時とn=9の時に共通する考え方を導き出そう
(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)個書いて改行する
}

とすればよい。