Menu
Coddy logo textTech

Podsumowanie – kody kuponów

Część sekcji Programowanie obiektowe ścieżki Ruby w Coddy. Lekcja 16 z 57.

challenge icon

Wyzwanie

Średni

Uzupełnij klasę Coupon. Fabryka Coupon.parse(code) przyjmuje SAVE, po którym następuje wartość procentowa (SAVE10), albo OFF, po którym następuje kwota (OFF5), i zwraca nil dla każdego innego kodu. Wartości procentowe przekraczające stałą MAX_PERCENT (50) są obniżane do 50. Każdy kupon utworzony przez fabrykę jest zliczany w zmiennej instancji klasy, dostępnej do odczytu jako Coupon.issued; ustaw new jako prywatne. apply(total) zwraca sumę po obniżce, nie mniejszą niż 0, a to_s zwraca SAVE10 (10% off) lub OFF5 (5.00 off).

Dostarczony kod odczytuje łączną kwotę zamówienia z pierwszego wiersza, a następnie jeden kod z każdego kolejnego wiersza. Wypisuje SAVE10 (10% off): 90.00 lub invalid code HELLO, a na końcu issued: 2.

Twój kod umieść w coupon.rb. main.rb zawiera dostarczony kod wejścia/wyjścia i nie można go edytować.

Spróbuj swoich sił

require_relative 'coupon'

# Dostarczony kod wejścia/wyjścia: pozostaw go bez zmian
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}"

Wszystkie lekcje w sekcji Programowanie obiektowe

Poćwicz samodzielnie: Kompilator Ruby online