ヒント

1.基本作業単位

1つの値を受け取って,何けたの数か表示する作業は次のように行えばよい

値を1つキーボードから受け取る
その値が何けたの数か,桁数を数える作業を行う
桁数を表示する

上記内の「何けたの数か,桁数を数える作業」は次のように行えばよい

カウンタ変数=0
while (与えられた変数>0) {
    カウンタ変数を1増やす
    与えられた変数=与えられた変数/10
}
(この時点でカウンタ変数には何回10で割ることができたか数えた値が入っている)
(すなわちこの値が桁数)


2.負の数を受け取るまで「1」の基本作業単位を繰り返す作業(まともに繰り返す)

1:値を1つキーボードから受け取る
2:その値が正なら次へ進み,負なら作業終了
3:その値が何けたの数か,桁数を数える作業を行う
4:桁数を表示する

1:値を1つキーボードから受け取る
2:その値が正なら次へ進み,負なら作業終了
3:その値が何けたの数か,桁数を数える作業を行う
4:桁数を表示する

1:値を1つキーボードから受け取る
2:その値が正なら次へ進み,負なら作業終了
3:その値が何けたの数か,桁数を数える作業を行う
4:桁数を表示する

1:値を1つキーボードから受け取る
2:その値が正なら次へ進み,負なら作業終了
3:その値が何けたの数か,桁数を数える作業を行う
4:桁数を表示する
         
         

3.繰り返し処理部分の発見

「2.」では,同じ作業が繰り返されているのがわかる。
繰り返しの作業の一回分は

1:値を1つキーボードから受け取る
2:その値が正なら次へ進み,負なら作業終了
3:その値が何けたの数か,桁数を数える作業を行う
4:桁数を表示する

であるが,while文を使うので,繰り返しの作業の始まりは,

2:その値が正なら次へ進み,負なら作業終了

にならなければならない。
そうすると,「2.」の作業は,最初の1行が仲間はずれになり,

1:値を1つキーボードから受け取る

2:その値が正なら次へ進み,負なら作業終了
3:その値が何けたの数か,桁数を数える作業を行う
4:桁数を表示する
1:値を1つキーボードから受け取る

2:その値が正なら次へ進み,負なら作業終了
3:その値が何けたの数か,桁数を数える作業を行う
4:桁数を表示する
1:値を1つキーボードから受け取る

2:その値が正なら次へ進み,負なら作業終了
3:その値が何けたの数か,桁数を数える作業を行う
4:桁数を表示する
1:値を1つキーボードから受け取る

2:その値が正なら次へ進み,負なら作業終了
3:その値が何けたの数か,桁数を数える作業を行う
4:桁数を表示する
1:値を1つキーボードから受け取る
     
     

のように繰り返し作業単位を変更しなければならない。この作業は,while文を使うと
やはり,最初の1行が仲間外れになり,次のようになる。

1:値を1つキーボードから受け取る

while(その値が正だったら){  ←ここが2:
   3:その値が何けたの数か,桁数を数える作業を行う
   4:桁数を表示する
   1:値を1つキーボードから受け取る


4.プログラムとして構成

プログラムとして構成すると次のようになる。

1:値を1つキーボードから受け取る

while(その値が正だったら){  ←ここが2:

↓この中が3:
カウンタ変数=0
while (与えられた変数>0) {
    カウンタ変数を1増やす
    与えられた変数=与えられた変数/10
}
(この時点でカウンタ変数には何回10で割ることができたか数えた値が入っている)
(すなわちこの値が桁数)

   4:桁数を表示する
   1:値を1つキーボードから受け取る