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ụ:
Input Output 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
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