Ruby :: Aufgabe #78

2 Lösungen Lösungen öffentlich

Das Briefmarkenproblem

Anfänger - Ruby von ElPapito - 07.05.2015 um 21:02 Uhr
Schreibe ein Programm, welches den Nutzer solange auffordert einen Betrag in Cent einzugeben, bis dieser größer oder gleich 20 und durch 5 teilbar ist. Dem Benutzer soll bei falscher Eingabe eine passende Fehlermeldung ausgegeben werden.

Dieser Betrag soll nun mit so wenig Briefmarken wie möglich ausgezahlt werden. Hierzu stehen allerdings nur 10 Cent und 25 Cent Briefmarken zur Verfügung.

Beispiele:
35 Cent = 1 * 25 Cent + 1 * 10 Cent
55 Cent = 1 * 25 Cent + 3 * 10 Cent
80 Cent = 2 * 25 Cent + 3 * 10 Cent
95 Cent = 3 * 25 Cent + 2 * 10 Cent

Lösungen:

vote_ok
von qwwyzq (120 Punkte) - 09.06.2015 um 21:23 Uhr
Quellcode ausblenden Ruby-Code
BRIEFMARKE1 = 25
BRIEFMARKE2 = 10

puts "----------"
puts "Bitte geben Sie einen Betrag ein"
puts "----------"
eingabe = gets.chomp.to_f

while eingabe == false
  if eingabe >= 20 and eingabe % 5 == 0
    return true
  elsif eingabe < 20
    puts "Der Betrag ist zu klein"
  elsif
    eingabe % 5 != 0
    puts "Der Betrag ist nicht durch fuenf teilbar"
  else
    puts "Keine gueltige Eingabe"
  end
end

wert = 0
marke1 = 0
marke2 = 0
while wert != eingabe
  if wert + BRIEFMARKE1 < eingabe
    tmp = wert + BRIEFMARKE1
    if tmp < eingabe
      wert += BRIEFMARKE1
      marke1 += 1
    end
  else
    wert += BRIEFMARKE2
    marke2 += 1
  end
end
puts "#{eingabe} Cent = #{marke1} * 25 Cent + #{marke2} * 10 Cent"
vote_ok
von Idef1x (1320 Punkte) - 12.07.2018 um 09:12 Uhr
Quellcode ausblenden Ruby-Code
def postmarks(value)
    
    # Declarations
    val = value
    count_25 = 0
    count_10 = 0
    
    # Calculations
    if  val % 25 == 5 || val % 25 == 15 then
        
        count_25 = val / 25 - 1
        
    else
        
        count_25 = val / 25
        
    end
    
    val -= count_25 * 25
    
    count_10 = val / 10
    
    # Output
    puts "#{value} Cent = #{count_25} * 25 Cent + #{count_10} * 10 Cent"
    
end

#================================================================================================
value = 0

loop do
    
    value = gets.to_i
    
    break if value % 5 == 0 && value > 20
    
    puts "Please enter a value dividable by 5 and greater than 20"
end

postmarks(value)