C1-06 · Phí giao hàng
Xem dạng PDFĐề
Cửa hàng (giá giả định) miễn phí giao cho đơn từ 300.000 đồng trở lên; đơn nhỏ hơn chịu phí 25.000 đồng. Cho giá trị đơn hàng don_hang, tính tổng tiền phải trả.
Viết mã giả, vẽ sơ đồ khối, lập ít nhất ba ca kiểm thử, trong đó có ca don_hang đúng bằng ranh giới. Chưa học rẽ nhánh (Ví dụ 3.1 sẽ làm lại bài này bằng if), nên hãy tự đi theo mã giả để biết mỗi đơn rơi vào nhánh nào, rồi in biểu thức của nhánh đó, cho đơn 120000 và đơn 300000.
Dữ liệu vào
Không có. Chương trình không đọc dữ liệu: mọi giá trị đã viết sẵn trong mã nguồn (cách đọc dữ liệu từ bàn phím học ở mục 2.4).
Kết quả
Hai dòng: dòng 1 là tổng tiền của đơn 120000, dòng 2 là tổng tiền của đơn 300000. Mỗi dòng một số nguyên.
Ràng buộc
- Hai giá trị đơn hàng viết sẵn trong mã; trong mã viết số không có dấu chấm ngăn cách (
25000, không phải25.000).
Lưu ý khi nộp
Đề yêu cầu máy tính biểu thức, không in con số đã tính tay. Hệ thống chỉ so kết quả in ra nên không phân biệt được print(120000 + 25000) với print(145000); phần này giảng viên kiểm khi chấm tay. In đúng như mẫu: không nhãn, không đơn vị, không khoảng trắng hay dòng trống thừa. Dòng 2 là đơn đúng ranh giới — đọc kỹ chữ "từ 300.000 đồng trở lên".
Ví dụ
Dữ liệu vào:
Kết quả:
145000
300000
Giải thích ví dụ
Mã giả: NẾU don_hang ≥ 300000 THÌ tong ← don_hang NGƯỢC LẠI tong ← don_hang + 25000.
- Đơn 120000: ~120000 < 300000~ nên đi nhánh có phí, ~120000 + 25000 = 145000~.
- Đơn 300000: đúng bằng ranh giới, ~300000 \ge 300000~ nên được miễn phí, tổng là
300000.
Đây là ca biên: ai đọc "từ 300.000 trở lên" thành "trên 300.000" (dùng > thay ≥) sẽ in 325000.
Nguồn trong sách: Bài C1-06, mục 1.7, giáo trình Lập trình cơ sở với Python — TS. Nguyễn Quốc Long · Mức: (**)