お久しぶりの更新となりますね。
今回は、お誕生日からツェラーの公式の公式というものを使い曜日を求めたいと思います。
そのプログラムが下記に示すコードになります。
色々とプログラムをしていて楽しかったです。是非、皆さんも一度、チャレンジしてみてはいかがでしょう?


すべてのソースコードが見えないと思いますので
ソースコードの始まりから終わりまで
コピー&ペーストし、メモ帳なんかに張り付ければ全文見えます


 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
/*****************************************************************************
ツェラーの公式参考元サイト
URL : http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1129133746
http://tsunashima-origami.hatenablog.com/entry/2014/07/23/225434
******************************************************************************/
#include<iostream>
#include<string>
using namespace std;

void main( ) {
int w, tmp, h, y, m, d;
string str;

cout << " 誕生日から曜日を求めます。\n";
cout << " 西暦年( 整数 ) で入力してください。\n";
cout << " 生まれ年入力 ----> "; cin >> h;
cout << " 生まれ月入力 ----> "; cin >> m;
cout << " 生まれ日入力 ----> "; cin >> d;

tmp = h;
h = h; // h 百年
y = tmp /* % 10 */; // y 年
m = m; // m 月
d = d; // d 日

// 誕生日の生まれ月が、 1 月または 2 月の時 昨年の 1 月, 2 月にする。
if( m == 1 ) {
y--;
h--;
m = 13;

} else if( m == 2 ) {
y--;
h--;
m = 14;

}

// ツェラーの公式より曜日を求める
w = ( y + y / 4 - y / 100 + y / 400 + ( 13 * m + 8 ) / 5 + d );

// 条件分岐でツェラーの公式の戻り値と曜日を関連付ける
switch( w % 7 ) {
// 日曜日
case 0 :
str = "日曜日";
break;
// 月曜日
case 1 :
str = "月曜日";
break;
// 火曜日
case 2 :
str = "火曜日";
break;
// 水曜日
case 3 :
str = "水曜日";
break;
// 木曜日
case 4 :
str = "木曜日";
break;
// 金曜日
case 5 :
str = "金曜日";
break;
// 土曜日
case 6 :
str = "土曜日";
break;

}

cout << "\ndebug\n" << h << ", " << y << ", " << m << ", " << d << ", " << w << "\ndebug\n";
cout << str << "\n" << "\n";


}

syntax2html