ヒント
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つキーボードから受け取る
}