質問: 日付と曜日から、1週間前(7日前)の日付を算出するプログラム ツェラーの公式を用いて、日付(年月日)から曜日を算出する方法があります。 例えばy年m月d日の曜日は、下式で求められます。 (y + y/4 - y/100 + y/400 + (13*m + 8)/5 + d) % 7 *但し、1月・2月は、前年の13月・14月とする。 *答えは0=日曜~6=土曜 これを応用して(別に応用しなくても良いんですが・・・)日付と曜日から、1週間前の同一曜日の日付を求めるプログラムを考えております。 例) 入力:2005年9月21日、水曜日 出力(解):2005年9月14日 この例は非常に簡単に求められますが、完全汎用型のプログラムを考えております。 しかし、なかなか良い知恵が出ません!! どなたかご教示頂けると助かります。 よろしくお願いします。
回答: 回答と言うよりヒントですが...... まず、大抵の処理系には、「日付・時刻」を管理するクラスがあります。これまた大抵、「日付の連番」と「年月日それぞれの値」が使えますので、 ・年月日→連番に変換 ・連番になった状態で、7日分をマイナス ・それをさらに、年月日に戻す。 という手があります。 no.1 の形の回答にある、ユリウス通日に戻すのも同じ考え方です。 標準のcのライブラリの範囲では、time.h というヘッダに、一式関数が入っていますので、じっくり眺めれば使えると思います(使ったことはありません・いつも、処理系についているクラスを使っているので) 参考url:http://wisdom.sakura.ne.jp/programming/c/c60.html