C9-11 · Sổ kho giữa các lần chạy
Xem dạng PDFĐề
Tệp kho.csv như Ví dụ 9.2, mỗi dòng ma,don_gia,so_luong; tệp có thể chưa có (lần chạy đầu). Dữ liệu vào gồm m rồi m lệnh:
NHAP ma don_gia so_luong: mã mới thì thêm mặt hàng vào cuối kho; mã đã có thì cộng thêm số lượng, giữ đơn giá cũ.XUAT ma so_luong: không có mã đó hoặc không đủ hàng thì in ngayma KHONG DUvà kho không đổi; đủ thì trừ đi. Xuất hết thì mặt hàng vẫn giữ với số lượng 0.
Xử lý xong mọi lệnh thì ghi lại tệp, rồi in mỗi mặt hàng một dòng ma so_luong theo thứ tự trong tệp.
Cách nộp trên hệ thống chấm. Mỗi test là một lần chạy; hệ thống không giữ tệp giữa các lần chạy và không đọc được tệp bài làm ghi ra. Vì vậy bài được chuyển dạng: dữ liệu vào bắt đầu bằng k và k dòng là nội dung
kho.csvtrước khi chạy (k = 0 nghĩa là tệp chưa có), sau đó mới đến m và m lệnh. Phần inma so_luongcuối cùng chính là nội dung tệp sẽ ghi lại (bỏ đơn giá). Ở máy, hãy làm đúng bản có tệp và chạy hai lần liên tiếp để thấy kho được giữ lại.
Dữ liệu vào
- Dòng đầu: k. k dòng tiếp theo: nội dung
kho.csv, mỗi dòngma,don_gia,so_luong. - Dòng tiếp: m. m dòng tiếp theo: mỗi dòng một lệnh
NHAP ma don_gia so_luonghoặcXUAT ma so_luong.
Kết quả
- Các dòng
ma KHONG DU, theo thứ tự lệnh gặp lỗi. - Sau đó mỗi mặt hàng của kho một dòng
ma so_luong, theo thứ tự trong tệp (mặt hàng mới ở cuối, theo thứ tự được nhập lần đầu).
Ràng buộc
- 0 ≤ k ≤ 1000; 1 ≤ m ≤ 1000.
- Mã gồm 1 đến 10 chữ cái/chữ số, phân biệt hoa thường; các mã trong tệp đôi một khác nhau.
- 1 ≤ dongia ≤ 10⁶; trong tệp 0 ≤ soluong ≤ 10⁶; trong lệnh 1 ≤ so_luong ≤ 10⁶.
Ghi chú chấm: kết quả chỉ có ma so_luong (đúng như sách), nên hệ thống không kiểm được yêu cầu "giữ đơn giá cũ" khi NHAP mã đã có. Yêu cầu này vẫn là một phần của đề: hãy tự kiểm bằng bản có tệp ở máy (mở kho.csv sau khi chạy xem đơn giá có đổi không).
Ví dụ
Dữ liệu vào:
1
BUTBI,5000,8
2
XUAT BUTBI 10
NHAP TAY01 3000 20
Kết quả:
BUTBI KHONG DU
BUTBI 8
TAY01 20
Giải thích ví dụ
XUAT BUTBI 10: chỉ còn 8 cây → inBUTBI KHONG DU, kho giữ nguyên 8.NHAP TAY01 3000 20: mã mới → thêm vào cuối với số lượng 20.- Kho sau cùng (cũng là nội dung
kho.csvghi lại):BUTBI,5000,8vàTAY01,3000,20, inBUTBI 8,TAY01 20.
Ca biên cần thử: xuất đúng bằng số tồn (được phép, còn 0), xuất mã chưa có, nhập mã đã có (cộng dồn — quên int() thì "8" + "40" thành "840").
Nguồn trong sách: Bài C9-11, mục 9.10, giáo trình Lập trình cơ sở với Python — TS. Nguyễn Quốc Long · Mức: (****)