Menu
Coddy logo textTech

Zusammenfassung – Gutscheincodes

Teil des Abschnitts Objektorientierte Programmierung der Ruby-Journey von Coddy. Lektion 16 von 57.

challenge icon

Aufgabe

Mittel

Vervollständige die Klasse Coupon. Die Fabrik Coupon.parse(code) akzeptiert SAVE gefolgt von einem Prozentsatz (SAVE10) oder OFF gefolgt von einem Betrag (OFF5) und gibt für jeden anderen Code nil zurück. Prozentsätze über der Konstante MAX_PERCENT (50) werden auf 50 reduziert. Jeder von der Fabrik erstellte Coupon wird in einer Klasseninstanzvariablen gezählt, die als Coupon.issued lesbar ist; mache new privat. apply(total) gibt den rabattierten Gesamtbetrag zurück, der niemals unter 0 liegt, und to_s gibt SAVE10 (10% off) oder OFF5 (5.00 off) zurück.

Der bereitgestellte Code liest die Bestellsumme aus der ersten Zeile und aus jeder folgenden Zeile einen Code. Er gibt SAVE10 (10% off): 90.00 oder invalid code HELLO aus und schließlich issued: 2.

Dein Code gehört in coupon.rb. main.rb enthält den bereitgestellten Eingabe-/Ausgabecode und darf nicht bearbeitet werden.

Probier es selbst

require_relative 'coupon'

# Bereitgestellter Ein-/Ausgabecode: belasse ihn wie er ist
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}"

Alle Lektionen in Objektorientierte Programmierung

Übe selbstständig: Online-Ruby-Compiler