hàm thứ trong tuần: Here is a post related to this topic.
Cách tính thứ khi biết ngày tháng năm như nào? Bạn có biết bằng cách nào các ứng dụng lịch có thể xác định thứ của các ngày từ quá khứ tới tương lai tít tắp như vậy không? Bởi vì chúng ta có thể tính toán được việc đó. Bây giờ bạn có một bài tập C/C++ như sau: Hãy nhập vào ngày tháng năm, in ra hôm đó là thứ mấy? Hãy cùng Nguyễn Văn Hiếu Blog đi giải quyết bài tập này nhé.
1. Bài toán tính thứ khi biết ngày tháng năm
Trong cuộc sống tất bật, chúng ta thường xuyên phải xác định ngày hôm nay là thứ mấy trong tuần. Chẳng hạn như, kiểm tra sinh nhật của thằng bạn rơi vào thứ mấy? Hay thực tế hơn, bạn có một ứng dụng muốn hiện thị đầy đủ thông tin thời gian… Và lý do hợp lý nhất, bạn muốn biết bằng cách nào có thể xác định thứ mấy khi biết ngày tháng năm. Không dài dòng nữa, chúng ta sẽ cùng đi thẳng vào vấn đề nhé.
2. Tính thứ khi biết ngày tháng năm như nào?
Để xây dựng một chương trình tính thứ cho biết trước ngày tháng năm, chúng ta cần thực hiện các công việc tuần tự như sau:
- Nhận các thông tin ngày, tháng, năm được nhập bởi người dùng
- Kiểm tra thông tin nhập là hợp lệ
- Kiểm tra năm đó có phải năm nhuận không
- Xác định ngày đó là ngày thứ mấy trong tuần sử dụng Julien_day Calculation
Dưới đây là code trên ngôn ngữ C/C++ thực hiện tính thứ khi biết ngày tháng năm. Các bạn có thể dùng tham khảo:
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
#include
#include
using
namespace
std
;
/*
####################################################################
# Tim thu khi biet ngay thang nam #
####################################################################
*/
// Kiem tra ngay hop le
bool
check_date
[
int
day
,
int
month
]
{
if
[
[
month
==
2
]
&& [day>0] && [day0] && [day0] && [day
]
&& [month
999
]
&& [year < 10000]]{
return true;
}
else
{
return
false
;
}
}
// Kiem tra nam nhuan
bool
check_leap_year
[
int
year
]
{
if
[
[
[
year
%
4
]
==
]
&& [[year % 100]!=0]]{
return true;
}
else
if
[
[
year
%
400
]
==
]
{
return
true
;
}
else
{
return
false
;
}
}
// Tim chính xác thu theo ngày tháng nam dã biêt
//
// //en.wikipedia.org/wiki/Julian_day#Calculation
//
const
char
*
get_day
[
int
day
,
int
month
,
int
year
]
{
int
JMD
;
JMD
=
[
day
+
[
[
153
*
[
month
+
12
*
[
[
14
–
month
]
/
12
]
–
3
]
+
2
]
/
5
]
+
[
365
*
[
year
+
4800
–
[
[
14
–
month
]
/
12
]
]
]
+
[
[
year
+
4800
–
[
[
14
–
month
]
/
12
]
]
/
4
]
–
[
[
year
+
4800
–
[
[
14
–
month
]
/
12
]
]
/
100
]
+
[
[
year
+
4800
–
[
[
14
–
month
]
/
12
]
]
/
400
]
–
32045
]
%
7
;
//cout