Bài tập tính số ngày đã qua trong năm.
Hướng dẫn: Để tính số ngày đã qua tính đến thời điểm hiện tại (người dùng phải nhập ngày và tháng vào, giả sử ở đây là ngày 22 tháng 5), thì ta phải tính số ngày từ ngày 1/1 đến hết cuối tháng 4 rồi cộng với 22 là ra.
Ta sẽ lập 2 file (1 file function và 1 file script)
File function có nội dung như sau:
- Code:
function [t]= tong(ngay,thang,ngaykhacbiet)
t=0;
for k=1:(thang-1)
switch k
case {1 3 5 7 8 10 12}
t=t+31;
case {4 6 9 11}
t=t+30;
case 2
t=t+28+ngaykhacbiet;
end
end
t=t+ngay;
Đoạn này có nghĩa như sau:
Lúc đầu ta đặt 1 tham số t để tính tổng số ngày, ban đầu t nhận giá trị là 0 cái đã.
Đặt 1 biến k chạy từ tháng 1 cho đến tháng trước tháng hiện tại (dùng để tính tổng số ngày của các tháng trước). Ví dụ bây giờ là 22/5 thì mình sẽ tính tất cả số ngày trong 4 tháng đầu rồi cộng với 22.
Lệnh switch-case dùng để chia trường hợp cho k.
k chạy từ 1 đến (tháng -1), khi nào k đến các vị trí = {1 3 5 7 8 10 12} thì tham số t sẽ được cộng thêm 31, nếu mình nhập ngày 22/5 có nghĩa là k sẽ chạy từ 1 đến 4, khi gặp 1 thì t mới = t cũ (tức là 0 đó) + 31 = 31, khi gặp 3 thì nó tiếp tục + 31 nữa = 62 (không có 5 7 8 10 12)
Tiếp theo, khi gặp 4 thì t sẽ cộng thêm 30 --> t mới = 62 + 30=92.
Tiếp theo, khi gặp 2 thì t sẽ cộng thêm 28 và cộng thêm ngày khác biệt nữa (vì tháng 2 có thể có 28 hoặc 29 ngày nên ngày khác biệt ở đây có thể là 0 hoặc 1 tùy lúc người dùng nhập vào ở phần sau (phần script)).
Đến đây là ta đã tính xong tổng số ngày của các tháng trước.
Lệnh t = t+ngay để tính cả những ngày của tháng hiện tại.
Vậy là xong file function.
Đến file script:
- Code:
ngay=input('Nhap ngay hom nay: ');
thang=input('Nhap thang: ');
ngaykhacbiet=input('Neu nam nhuan nhap 1, khong nhuan nhap 0: ');
t=tong(ngay,thang,ngaykhacbiet);
disp('Tong so ngay da qua: ')
disp(t)
file script này lưu với tên gì cũng được, ở đây tớ đặt là "abc.m"
lệnh thứ nhất để người dùng nhập ngày
lệnh thứ hai để người dùng nhập tháng
lệnh thứ ba chỉ là 1 cái mẹo để nhập ngày khác biệt
lệnh thứ 4 là để chạy cái file function lúc trước
lệnh thứ 5 và 6 để cho kết quả ra màn hình.
Haizzz, chiều nay học thực hành có đọc qua thế mà về đến nhà ko nhớ, ngồi mầy mãi mới xong :-<