Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Ngay{
- int day;
- int month;
- int year;
- ...
- };
- //Tìm ngày trước đó K ngày.
- // Trả về ngày trước đó K ngày
- Ngay Ngay::Before_Day( int K )
- {
- Ngay Bef(day,month,year);
- while ( Bef.day <= K) //và khi ngược lại
- {
- K = K - Bef.day; //trừ số ngày ra sao cho trờ về đầu tháng ( cuối tháng trước)
- if ( Bef.month == 1) //nếu đó là tháng 1.
- {
- Bef.month = 12; //đặt lại ngày tháng của cuối năm trước
- Bef.year--;
- Bef.day = 31;
- continue; //tiếp tục vòng lặp
- }
- else
- Bef.month = Bef.month - 1; //nếu không phải thì trở về tháng trước
- //xem tháng trước là tháng mấy, có bao nhiêu ngày.
- Bef.day = Day_in_Month(Bef.month,Bef.year);
- }
- if ( Bef.year <= 0 )
- {
- Bef.day = 1;
- Bef.month = 1;
- Bef.year = 1;
- }
- //nếu ngày > ngày giảm
- if ( Bef.day > K)
- {
- Bef.day = Bef.day - K; //trừ ngày ra
- return Bef;
- }
- return Bef;
- }
- //Tìm ngày sau đó K ngày
- //Trả về ngày sau K ngày
- Ngay Ngay::After_Day ( int K )
- {
- Ngay Af(day,month,year);
- int STT = Af.Day_in_Year(); //tìm thứ tự ngày từ đầu năm
- K = K + STT; //Tăng số lượng ngày cộng
- Af.day = 1;
- Af.month = 1; //Đưa Af về đầu năm
- //Tính theo năm. Lượng ngày cộng có lớn hơn ngày của 1 năm không
- while ( K > 365 )
- {
- if (Test_Leap_Year(Af.year))
- K = K - 366;
- else
- K = K - 365;
- Af.year++; //Nếu có thì tăng năm. và giảm lượng ngày cộng xuống
- }
- //Lượng ngày cộng còn lại có nhiều hơn số ngày của tháng không. bắt đầu từ tháng 1
- while ( K > Day_in_Month(Af.month,Af.year))
- {
- K = K - Day_in_Month(Af.month,Af.year);
- Af.month++; //Nếu có thì tăng tháng
- }
- if ( K != 0 )
- {
- Af.day = K; //Nếu lượng ngày cộng lớn hơn 0, tức là sẽ là ngày thứ đó của tháng sau
- }
- return Af;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement