Giả sử chúng ta có một ngày (ngày, tháng và năm). Kể từ ngày này, chúng ta phải tìm ngày trong tuần của ngày đã cho đó. Để giải quyết vấn đề này, chúng tôi sẽ sử dụng Thuật toán Zeller. Công thức để tìm ngày trong tuần bằng Thuật toán Zeller có ở đây
𝑤 =$$ \ lgroup d + \ lfloor \ frac {13 (m + 1)} {5} \ rfloor + y + \ lfloor \ frac {y} {4} \ rfloor + \ lfloor \ frac {c} {4} \ rfloor + 5c \ rgroup mod 7 $$
Công thức chứa một số biến; Họ -
d - Ngày trong ngày.
m - Đó là mã tháng. Đối với tháng 3 đến tháng 12 là 3 đến 12, đối với tháng 1 là 13 và đối với tháng 2 là 14. Khi chúng ta xem xét tháng 1 hoặc tháng 2, thì năm nhất định sẽ giảm đi 1.
y - Hai số cuối của năm
c - hai chữ số đầu tiên của năm
w - Các ngày trong tuần. Khi nó là 0, nó là thứ bảy, khi nó là 6, nó có nghĩa là thứ sáu
Vì vậy, ví dụ:nếu chúng ta muốn lấy ngày trong tuần là ngày 4 tháng 1 năm 1997, thì kết quả đầu ra sẽ là "Thứ bảy"
Thuật toán như sau -
Thuật toán
zellersAlgorithm (ngày, tháng, năm)
Đầu vào - Ngày trong ngày.
Đầu ra - Hôm đó là ngày nào, (Chủ nhật đến Thứ bảy).
Begin if month > 2, then mon := month else mon := 12 + month decrease year by 1 y := last two digit of the year c := first two digit of the year w := day + floor((13*(mon+1))/5) + y + floor(y/4) + floor(c/4) + 5*c w := w mod 7 return weekday[w] //weekday will hold days from Saturday to Friday End
Ví dụ (C ++)
#include #include using namespace std; string weekday[7] = {"Saturday","Sunday","Monday","Tuesday", "Wednesday","Thursday","Friday"}; string zellersAlgorithm(int day, int month, int year){ int mon; if(month > 2) mon = month; //for march to december month code is same as month else{ mon = (12+month); //for Jan and Feb, month code will be 13 and 14 year--; //decrease year for month Jan and Feb } int y = year % 100; //last two digit int c = year / 100; //first two digit int w = (day + floor((13*(mon+1))/5) + y + floor(y/4) + floor(c/4) + (5*c)); w = w % 7; return weekday[w]; } int main(){ int day, month, year; cout << "Enter Day: "; cin >>day; cout << "Enter Month: "; cin >>month; cout << "Enter Year: "; cin >>year; cout << "It was: " <<zellersAlgorithm(day, month, year); }
Đầu vào
(4, 1, 1997)
Đầu ra
Enter Day: 4 Enter Month: 1 Enter Year: 1997 It was: Saturday