Nội dung Bài tập
Mã:
DATE
Tên:
Ngày Tháng Năm
Dạng thi:
oi
Thang điểm:
10 điểm
Giới hạn thời gian:
1 giây
Giới hạn bộ nhớ:
128 MB
Được tạo bởi:
HCMUP1
Ngày Tháng Năm 

Xây dựng cấu trúc để biểu diễn ngày ,tháng, năm (kiểu số nguyên và phải hợp lệ) 

  • Viết quá tải toán tử nhập ( >> ) ,xuất ( << ) (có kiểm tra tính hợp lệ hiện thị ra màn hình dạng MM/DD/YYYY) 
  • Viết hàm kiểm tra năm nhuận khi biết ngày tháng năm (ngày 15/01/2016 thuộc năm nhuận )
  • viết hàm tìm ngày thứ mấy trong năm khi biết ngày tháng năm (VD: ngày 15/01/2016 là ngày thứ 15 trong năm 2016)
  • viết hàm xác định thứ trong tuần khi biết ngày tháng năm (16/05/2016 là thứ 2 )
  • viết hàm tìm ngày kế tiếp khi biết ngày tháng năm (VD: 15/05/2016 ngày kế tiếp là 16/05/2016)
  • viết quá tải toán tử so sánh bằng ( == )  để so sánh 2 ngày trùng nhau (VD: 17/05/2011 == 17/05/2011 )
  • viết hàm kiểm tra xem 2 ngày có trùng thứ trong tuần không (VD : 16/05/2016 trùng thứ với 09/05/2016 vì cùng là thứ 2)
  • viết quá tải so sánh nhỏ hơn ( < ) để so sánh ngày nào nhỏ hơn (VD: 15/05/2013 < 02/07/2013)
  • viết quá tải so sánh trừ ( - ) để tính số ngày giữa 2 ngày (VD: 15/05/2015 đến ngày 20/05/2015 cách nhau 5 ngày ) 
gợi ý : cách tính thứ của ngày trong năm :
nếu tháng của ngày đó nhỏ hơn 3 thì biến đổi tháng = tháng + 12 , năm  = năm - 1 ,nếu tháng của ngày đó lớn hơn 2 thì giữ nguyên ,sau đó thế vào CT : 
  • n = (ngày+2*tháng+(3*(tháng+1)) / 5 + năm + (năm / 4)) % 7 
  • với n = 0 là Chủ Nhật, n = 1 là thứ 2 , n = 3 là thứ 3,.....

dữ liệu nhập: 
  • dòng 1: ngày thứ 1, có dạng DD MM YYYY
  • dòng 2: ngày thứ 2, có dạng DD MM YYYY

dữ liệu xuất: 
  • dòng 1: xuất ra ngày 1 ,thuộc  thứ mấy trong trong tuần, ngày thứ mấy trong năm, ngày kế tiếp,  nếu ngày 1 là năm nhuân in ra "TRUE", ngược lại in ra "FALSE", 
  • dòng 2: xuất ra ngày 2 ,thuộc  thứ mấy trong trong tuần, ngày thứ mấy trong năm, ngày kế tiếp, nếu ngày 2 là năm nhuân in ra "TRUE", ngược lại in ra "FALSE",
  • dòng 3: nếu ngày 1 và 2 có thứ trong tuần trùng nhau thì in ra "TRUE" ,ngược lại in ra "FALSE"
  • dòng 4: nếu ngày 1 nhỏ hơn ngày 2 thì in ra "1 < 2", nếu ngày 1 trùng ngày 2 in ra "1 = 2", nếu ngày 1 lớn hơn ngày 2 in ra "1 > 2"
  • dòng 5: số ngày giữa ngày 1 và ngày 2
lưu ý : 
Chủ Nhật - xuất ra "Sunday"
Thứ 2 - xuất ra "Monday"
Thứ 3 - xuất ra "Tuesday"
Thứ 4 - xuất ra "Wednesday"
Thứ 5 - xuất ra "Thursday"
Thứ 6 - xuất ra "Friday"
Thứ 7 - xuất ra "Saturday"

Ví dụ:

InputOutput
17 05 2016
05 05 2015
17/05/2016 Tuesday 138 18/05/2016 TRUE
05/05/2015 Tuesday 125 06/05/2015 FALSE
TRUE
1 > 2
378




    Quảng cáo
       Ngôn ngữ : 

       Theme : 
Mời bạn soạn code



		



      Ai có thể xem bài này : 

Thông tin



Phần thảo luận