Menu
Coddy logo textTech

Riepilogo - Codici coupon

Fa parte della sezione Programmazione orientata agli oggetti del percorso Ruby di Coddy. Lezione 16 di 57.

challenge icon

Sfida

Medio

Completa la classe Coupon. La factory Coupon.parse(code) accetta SAVE seguito da una percentuale (SAVE10) oppure OFF seguito da un importo (OFF5) e restituisce nil per qualsiasi altro codice. Le percentuali superiori alla costante MAX_PERCENT (50) vengono ridotte a 50. Ogni coupon creato dalla factory viene conteggiato in una variabile di istanza della classe, leggibile come Coupon.issued; rendi new privato. apply(total) restituisce il totale scontato, mai inferiore a 0, e to_s restituisce SAVE10 (10% off) oppure OFF5 (5.00 off).

Il codice fornito legge il totale dell'ordine dalla prima riga e un codice per ogni riga successiva. Stampa SAVE10 (10% off): 90.00 oppure invalid code HELLO, e infine issued: 2.

Il tuo codice va inserito in coupon.rb. main.rb contiene il codice fornito per l'input/output e non può essere modificato.

Provalo tu

require_relative 'coupon'

# Código de entrada/salida proporcionado: mantenlo tal como está
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}"

Tutte le lezioni di Programmazione orientata agli oggetti

Esercitati da solo: Compilatore Ruby online