Thuật toán của Zeller được sử dụng để tìm ngày trong tuần từ một ngày nhất định. Công thức để tìm ngày trong tuần bằng Thuật toán Zeller ở đây:
Công thức chứa một số biến; Họ -
d - Ngày trong ngày.
m:Đây là mã tháng. Từ 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 chữ 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
Đầu vào và Đầu ra
Input: The day, month and the year: 4, 1, 1997 Output: It was: Saturday
Thuật toán
zellersAlgorithm(day, month, year)
Đầ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ụ
#include<iostream>
#include<cmath>
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 ra
Enter Day: 04 Enter Month: 01 Enter Year: 1997 It was: Saturday