Menu
Coddy logo textTech

Récapitulatif - Codes de réduction

Fait partie de la section Programmation orientée objet du Journey Ruby de Coddy. Leçon 16 sur 57.

challenge icon

Défi

Moyen

Complétez la classe Coupon. La fabrique Coupon.parse(code) accepte SAVE suivi d’un pourcentage (SAVE10) ou OFF suivi d’un montant (OFF5) et renvoie nil pour tout autre code. Les pourcentages supérieurs à la constante MAX_PERCENT (50) sont réduits à 50. Chaque coupon créé par la fabrique est comptabilisé dans une variable d’instance de classe, accessible via Coupon.issued ; rendez new privée. apply(total) renvoie le total après réduction, jamais inférieur à 0, et to_s renvoie SAVE10 (10% off) ou OFF5 (5.00 off).

Le code fourni lit le total de la commande sur la première ligne, puis un code par ligne suivante. Il affiche SAVE10 (10% off): 90.00 ou invalid code HELLO, puis enfin issued: 2.

Votre code doit se trouver dans coupon.rb. main.rb contient le code fourni pour les entrées et les sorties et ne peut pas être modifié.

Essayez vous-même

require_relative 'coupon'

# Code d'entrée/sortie fourni : le garder tel quel
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}"

Toutes les leçons de Programmation orientée objet

Entraînez-vous par vous-même : Compilateur Ruby en ligne