Chủ Nhật, 18 tháng 11, 2012

VÍ DỤ VỀ VÒNG LẶP IF ELSE TRONG C/C++


  • 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.
-         Nhóm 6: tháng 12.


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):
-         Link mediafire: http://www.mediafire.com/?182y272sdu77t74
-         Google docs: word_code

-         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