通算日のプログラムを配列を使って書いてみましょう.
class YearDay2 {
public static void main(String argv[ ]) {
int c[ ]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int n=210;
int m, p;
m=1; p=0;
while(n > p+c[m]){
p=p+c[m];
m=m+1;
}
System.out.println(n + "=" + m + "月" + (n-p) + "日");
}
}
目的とする日数(n)を越す直前まで月(m)と累積日(p)とを増やす格好になっています.最初のifを12個並べたものとは格段にスマートでわかりやすいものになりました.なおここでは,配列cのサイズは(12ではなく)13としてあります.k月の日数をc[k]で表わしたいからです.c[12]が使えるためには,サイズ13(以上)である必要があります.c[0]は使用しないことになります.結果を示します.
210=7月29日
このプログラムは一応動くのですが,nの初期値(ここでは210)によっては異常終了してしまうことがあります.なぜでしょうか.
| 26.1.6.6 配列定義 |
|
26.1.6.7 配列の使用 |
|
26.1.6.8 配列と反復 |
|
2009年度版に向けて現在作業中です.
このページに関してお気づきの点がありましたら
コメント投稿システムまでお願いします.
|
Thu, 02 Sep 2004 18:49:16 JST (1793d) | |||