- Bài toán đặt ra:
Nhập vào
ngày tháng năm của 1 năm bất kỳ xuất ra:
-
Ngày
trước đó.
-
Ngày
sau đó.
-
Tháng
đó có bao nhiêu ngày.
-
Ngày
tháng có hợp lệ không.
- Ý tưởng ban đầu:
Đầu tiên ta
có thể chia ra 3 nhóm cơ bản:
-
Nhóm
1: tháng 1,3,5,7,8,10,12.
-
Nhóm
2: 4,6,9,11.
-
Nhóm
3: tháng 2
(với việc chỉ xét xem
tháng đó có bao nhiêu ngày)
Nhưng yêu cầu
1,2 lại xét thêm ngày tháng sau và trước đó, do đó ta lại chia lại thành các
nhóm sau:
-
Nhóm
1: tháng 5,7,8,10.
-
Nhóm
2: tháng 4,6,9,11.
-
Nhóm
3: tháng 3.
-
Nhóm
4: tháng 2.
-
Nhóm
5: tháng 1.
Vậy là xong
việc chia nhóm, tiếp theo là 1 điều kiện để kiểm tra xem năm đó có phải năm nhuận
hay không, bạn có thể dễ dàng tìm thấy công thức ở bất kì diễn đàn tin học nào,
ở đây mình chỉ trình bày lại:
-
Năm
nhuận là năm chia hết cho 4 mà không chia hết cho 100 hay chia hết cho 400
-
Tương
đương x là năm nhuận: (((x%100==0) && (x%4 !=0)) || (x %400==0))
Ý tưởng ban
đầu như thế đã ổn bây giờ chỉ còn là việc xét từng trường hợp ( nhóm )
- Bài giải tham khảo
Do việc sử dụng
if else khá dài nên khó mà mình đăng lên được, do đó bạn có thể tham khảo qua
đường link sau (xin thông cảm về sự bất tiện này):
-
Hoặc
gửi mail qua mình, mình sẽ gửi bài giải cho bạn ngay khi có thể:
Mình sẽ
trình bày 1 đoạn ngắn về tháng 2, dùng switch case theo đối tượng xét là tháng:
Không có nhận xét nào:
Đăng nhận xét