Bフレッツの開通を記念して、数年前までに集めた、C言語プログラム(関数)を順次公開するね。
既にどこかで、多くの方々に見られていたものかもしれない。
ただ、サポート等は一切できないと思う。ご質問にお答えすることもままならないかもしれない。ご容赦を。
さて、1本目、曜日を正しく計算してくれる関数の公開。
染色体の異常に起因するダウン症患者、知的発達が遅れるといいながら、西暦と月日を尋ねれば瞬時に曜日を言い当ててしまう、ということが簡単にできるらしい。
しかし、一般のわれわれには、曜日の計算はなかなかできない。が、ツェラー公式 が判れば、スマートに計算できるはず。
<関数名>
dayOfWeek ---- 西暦年月日からその曜日を算出
<形式>
int dayOfWeek(int year, int month, int day);
<引数>
year, month, day 西暦年月日
<関数値>
各曜日に対応する 0 〜 6 の値
0: 日、1: 月、2: 火、3: 水、4: 木、5: 金、6: 土
<注意事項>
引数として渡される西暦年月日が実在するかどうか については、本関数内ではチェックしない。
1582年10月15日以降の日についてのみ正しく算出する。
<用例>
dayOfWeek(2004, 8, 14);
<関数本体>
dayOfWeek.c
<説明>
ツェラー (Zeller) の公式 による計算法。
現在使われているグレゴリオ暦の初日は1582年10月15日(金曜)である。本関数はその日以降の曜日を正しく算出。
ちなみに、1582年10月15日(金曜)の前日はなんと、ユリウス暦1582年10月4日(木曜)。時間の空白があったわけだね(笑)。また、曜日だけは連続していて、休むことの大切さ、そこにもしみじみ感じる。