Menu
Coddy logo textTech

סיכום – קודי קופון

חלק מהיחידה תכנות מונחה עצמים במסלול ה-Ruby של Coddy. שיעור 16 מתוך 57.

challenge icon

אתגר

בינוני

השלימו את המחלקה Coupon. מפעל היצירה Coupon.parse(code) מקבל את SAVE ואחריו אחוז (SAVE10) או את OFF ואחריו סכום (OFF5), ומחזיר nil עבור כל קוד אחר. אחוזים מעל הקבוע MAX_PERCENT (50) מופחתים ל־50. כל קופון שמפעל היצירה יוצר נספר במשתנה מופע של מחלקה, שאפשר לקרוא באמצעות Coupon.issued; הפכו את new לפרטי. apply(total) מחזירה את הסכום לאחר ההנחה, שלעולם אינו קטן מ־0, ו־to_s מחזירה SAVE10 (10% off) או OFF5 (5.00 off).

הקוד שסופק קורא את הסכום הכולל של ההזמנה מהשורה הראשונה, וקוד אחד מכל שורה שאחריה. הוא מדפיס SAVE10 (10% off): 90.00 או invalid code HELLO, ולבסוף issued: 2.

כתבו את הקוד שלכם בקובץ coupon.rb. הקובץ main.rb מכיל את קוד הקלט/פלט שסופק ואי אפשר לערוך אותו.

נסו בעצמכם

require_relative 'coupon'

# קוד הקלט/פלט שסופק: יש להשאיר אותו כפי שהוא
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}"

כל השיעורים ביחידה תכנות מונחה עצמים

תרגלו בעצמכם: קומפיילר Ruby אונליין