C9-11 · Sổ kho giữa các lần chạy

Xem dạng PDF

Gửi bài giải

Điểm: 1,00
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Tác giả:
Nguồn bài:
Sách "Lập trình cơ sở với Python"
Dạng bài
Ngôn ngữ cho phép
Python

Đề

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 ngay ma KHONG DU và 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.csv trướ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 in ma so_luong cuố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òng ma,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_luong hoặc XUAT 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 → in BUTBI 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.csv ghi lại): BUTBI,5000,8 và TAY01,3000,20, in BUTBI 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: (****)


Đang tải...