[Buổi 25][Đóng gói][Lab] Bài 1: Validated Account


LÀM BÀI

Points: 100
Time limit: 1.0s
Memory limit: 256M

Author:
Problem types
Allowed languages
C++

Validated Account

Bối cảnh

Một tài khoản không nên cho bên ngoài gán balance tùy ý.

Thiết kế interface nhỏ để mọi thay đổi balance đều được kiểm soát.

Yêu cầu

  1. Tạo class Account có private balance.
  2. Method deposit(x) chỉ nhận x>0.
  3. Method withdraw(x) chỉ thành công nếu x>0 và x<=balance.
  4. Method getBalance() chỉ đọc.
  5. Đọc balance ban đầu và q thao tác; in SUCCESS/FAIL cho mỗi thao tác và balance cuối.

Yêu cầu tổ chức code

Balance phải là private và không có public setter vô điều kiện.

Online Judge chấm output. Giảng viên có thể review thêm cấu trúc code để xác nhận học viên luyện đúng kỹ năng OOP của buổi.

Input

Dòng 1 initial q; q dòng D x hoặc W x.

Output

Mỗi thao tác một dòng SUCCESS/FAIL; cuối cùng BALANCE value.

Ràng buộc

0≤initial≤1e12, |x|≤1e12.

Ví dụ 1

Input

100 4
D 50
W 30
W 200
D -1

Output

SUCCESS
SUCCESS
FAIL
FAIL
BALANCE 120

Giải thích

Balance ban đầu 100. Deposit50 hợp lệ làm balance150; withdraw30 hợp lệ còn120. Withdraw200 thất bại vì vượt balance và không được phá invariant; deposit-1 cũng fail. State cuối vẫn 120, nên output gồm hai SUCCESS, hai FAIL và BALANCE 120.

Ví dụ 2

Input

0 2
W 1
D 10

Output

FAIL
SUCCESS
BALANCE 10

Giải thích

Balance bắt đầu0. Withdraw1 không đủ tiền nên FAIL và state giữ0. Deposit10 hợp lệ, balance thành10. Dòng cuối BALANCE 10 chứng minh mọi thay đổi đều đi qua interface có validation.

Thông tin học tập

  • Module: M07
  • Buổi: B25
  • Loại bài: LAB
  • Độ khó: Easy
  • Concepts: class, encapsulation, private state, validation, methods
  • Giới hạn kiến thức: B01-B25
  • Time limit: 1 second(s)
  • Memory limit: 256 MB
  • Point: 100

Comments

There are no comments at the moment.

Zalo