Cho 14/03/2003 là một ngày trong năm. Hãy xác định xem thử ngày này là này thứ bao nhiêu của năm đó.
Ví dụ: Ngày nhập vào 14/03/2003, Kết quả: Ngay thu 73 cua nam 2003
Yêu cầu : - Input: 3 số ngay, thang, nam
- Output: So thu tu cua ngay
Bài toán ngược: Có số thứ tự của ngày trong năm, hãy xác định nhày đó là ngày nào.
Ví dụ: Nhập stt = 84 thì kết quả là 25/04.
Hướng dẫn: Làm theo chiều ngược lại.
- Giả sử ban đầu xuất phát với thang là 1. Nếu stt lớn hơn số ngày cua tháng (thang ) thì tiến hành:
o thang tăng lên 1
o stt được gán bằng stt trừ đi số ngày của tháng đó.
- Lặp lại quá trình trên cho đến khi stt nhỏ hơn hoặc bằng số ngày trong tháng
Hướng dẫn:
- Khởi gán stt là 0
- Với ví dụ trên, tính tổng cộng dồn số ngày của các tháng trước tháng 03 (cụ thể là tháng 01, tháng 02) vào stt. Sử dụng câu lệnh rẽ nhánh case để biết số ngày của các tháng.
- Bổ sung thêm số ngày của tháng hiện tại (ngay 14) vào stt.
Giải quyết bài toán với ngôn ngữ C
- Khai báo các thư viện sử dụng
- Định nghĩa hàm main( ) là hàm chính của chương trình có mục tiêu là giải quyết bài toán với 3 bước trên:
+ Khai báo biến sử dụng: ngay, thang, nam, stt
+ Thông báo nhập liệu và nhập giá trị cho các biến ngay, thang, nam
+ Khởi gán stt = 0
+ Lặp cộng dồn số ngày của các tháng mà nhỏ hơn thang
- Sử dụng case để xác định số ngày trong tháng
- Bổ sung số ngày vào stt
+ Bổ sung số ngày của tháng hiện tại vào stt
+ Thông báo kết quả
Chương trình:
Program ngaythangnam;
Uses crt;
Var ngay,thang,nam,i,stt:integer; // Khai bao bien su dung
Begin
Write(‘Nhap ngay, thang, nam:’); // Thong bao nhap lieu
Readln(ngay, thang, nam); // Nhap gtri cho ngay, thang, nam
stt := 0;
For i := 1 to thang do // Lap voi cac i nho hon thang da nhap vao)
case thang of
1,3,5,7,8,10,12 : stt := stt + 31;
4,6,9,11: stt := stt + 30;
2 : stt := stt + 28;
Else
stt := stt + ngay;
end;
Writeln(‘Ngay thu ‘, stt, nam); // Xuat ket qua
Readln;
End .