Computer >> Máy Tính >  >> Lập trình >> Lập trình

Tìm Ngày trong tuần bằng Thuật toán của Zeller


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:

Tìm Ngày trong tuần bằng Thuật toán của Zeller

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