rollover79
Thành viên tiêu biểu
- Tham gia
- 10/9/08
- Bài viết
- 764
- Được thích
- 1,310
Em mới thử trường hợp này thấy chưa đúng.Chậm chân một chút!
Có 1 thuật toán đơn giản, tôi nghĩ ra từ 3 ngày nay, nhưng chưa làm được. Bây giờ mới xong, nhờ các bạn kiểm tra hộ:
1. tính thời gian còn lại (A) của ngày bắt đầu: thí dụ bắt đầu 10:00, số giờ còn lại là 1,5 giờ cho ngày thứ bảy và 5 giờ cho ngày thường.
2. So sánh giờ định mức với A:a. nếu nhỏ hơn thì tính ngay
b. Nếu lớn hơn:3. Ngày kết thúc = ngày bắt đầu (quy về 7:30 sáng) + số ngày cộng thêmb.1- số ngày cộng thêm = 0, Dùng 1 vòng lặp Do:
b.2- cho số ngày cộng thêm tăng thêm 1
b.3- nếu ngày bắt đầu cộng với số ngày cộng thêm là chủ nhật, tăng số ngày ôộng thêm lên 1 nữa
b.4- tính số giờ còn lại sau khi cộng thêm 1 ngày
b.4.1- Nếu số giờ còn lại đó lớn hơn 4 giờ (thứ bảy), hoặc 7,5 giờ (ngày thường), loop (quay lại b.2)
b.4.2- Nếu số giờ còn lại nhỏ hơn 4 giờ (thứ bảy), hoặc 7,5 giờ (ngày thường), thoát Do
4. Giờ kết thúc = 7:30 + số giờ còn lại (ở cuối phần Do loop) + thêm 2 giờ nếu ngày thường và sau 11:30
Có thể tính chính xác đến 1 phút.
Nhờ mọi người kiểm tra hộ. Có 3 cái scrollbar để tiện cho việc kiểm tra: 1 cái tăng định mức thêm 1 giờ, 1 cái tăng thêm 5 phút, 1 cái tăng thêm 1 phút.
Xin cám ơn.
- Bắt đầu từ 15h ngày 12/01/2009, định mức là 1. Kết quả ra 8h30 ngày 13/01/2009(sai) đúng phải là 16h ngày 12/01/2009.