Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

หาวันในสัปดาห์ (Day of the Week) ใน C++

คำอธิบายปัญหา

สมมติว่าเรามีวันที่ (วัน เดือน และ ปี) จากวันที่นี้ เราต้องหาวันในสัปดาห์ของวันที่กำหนดนั้น เพื่อแก้ปัญหานี้ เราจะใช้ Zeller's Algorithm สูตรในการหาวันในสัปดาห์โดยใช้ Zeller's Algorithm คือ:

𝑤=$$\lgroup d+\lfloor \frac{13(m+1)}{5} \rfloor+y+\lfloor\frac{y}{4} \rfloor+\lfloor\frac{c}{4} \rfloor+5c \rgroup mod 7$$

สูตรนี้มีตัวแปรดังนี้:

d – วันของวันที่

m – รหัสเดือน สำหรับ มีนาคมถึงธันวาคม คือ 3 ถึง 12 สำหรับมกราคมคือ 13 และกุมภาพันธ์คือ 14 เมื่อพิจารณามกราคมหรือกุมภาพันธ์ ปีที่กำหนดจะลดลง 1

y – สองหลักสุดท้ายของปี

c – สองหลักแรกของปี

w – วันในสัปดาห์ เมื่อเป็น 0 คือ วันเสาร์ เมื่อเป็น 6 คือ วันศุกร์

เช่น ถ้าต้องการหาวันในสัปดาห์ของวันที่ 4 มกราคม 1997 ผลลัพธ์จะเป็น "Saturday"

อัลกอริทึม

zellersAlgorithm(day, month, year)

นำเข้า – วันที่

ผลลัพธ์ – วันในสัปดาห์ (อาทิตย์ถึงเสาร์)

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

ตัวอย่างโค้ด (C++)

#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); }

นำเข้า

(4, 1, 1997)

ผลลัพธ์

Enter Day: 4 Enter Month: 1 Enter Year: 1997 It was: Saturday