Menu
CoddyTech

Ôn tập: mã giảm giá

Thuộc phần Lập trình hướng đối tượng trong hành trình Ruby của Coddy. Bài học 16 trên 57.

challenge icon

Thử thách

Trung bình

Hoàn thiện lớp Coupon. Hàm tạo Coupon.parse(code) chấp nhận SAVE theo sau là một tỷ lệ phần trăm (SAVE10) hoặc OFF theo sau là một số tiền (OFF5), và trả về nil với mọi mã khác. Tỷ lệ phần trăm cao hơn hằng số MAX_PERCENT (50) sẽ được giảm xuống còn 50. Đếm mỗi phiếu giảm giá mà hàm tạo tạo ra bằng một biến thực thể của lớp, có thể đọc qua Coupon.issued; đặt new ở chế độ riêng tư. apply(total) trả về tổng tiền sau giảm giá, không bao giờ thấp hơn 0, còn to_s trả về SAVE10 (10% off) hoặc OFF5 (5.00 off).

Code được cung cấp đọc tổng tiền đơn hàng từ dòng đầu tiên và mỗi dòng tiếp theo là một mã. Code in ra SAVE10 (10% off): 90.00 hoặc invalid code HELLO, rồi cuối cùng in ra issued: 2.

Đặt code của bạn trong coupon.rb. main.rb chứa code đầu vào/đầu ra được cung cấp và bạn không thể chỉnh sửa tệp này.

Tự làm thử

require_relative 'coupon'

# Đoạn code đầu vào/đầu ra đã được cung cấp: giữ nguyên
input = []
while (line = gets)
  input << line.chomp
end
total = input[0].to_f
input.drop(1).each do |code|
  coupon = Coupon.parse(code)
  if coupon
    puts format("%s: %.2f", coupon, coupon.apply(total))
  else
    puts "invalid code #{code}"
  end
end
puts "issued: #{Coupon.issued}"

Tất cả bài học trong Lập trình hướng đối tượng

Tự luyện tập: Trình biên dịch Ruby online