Ruby :: Aufgabe #224

1 Lösung Lösung öffentlich

Array von Zahlen in die nächstgelegene durch 5 teilbare Zahl umwandeln

Anfänger - Ruby von Gustl - 08.05.2019 um 20:08 Uhr
Schreibe ein Programm welches aus einem Array von Dezimalzahlen diese Zahlen in die nächstgelegene durch 5 teilbare Zahl umwandeln.

Etwa so:

Konsolenausgabe:

 7.1 => 5
8.4 => 10
-2.4 => 0
-2.6 => -5
-8.3 => -10

Lösungen:

vote_ok
von nlo22 (120 Punkte) - 15.08.2019 um 13:36 Uhr
Quellcode ausblenden Ruby-Code
def naechst_durch_5_teilbare_zahl(array_von_zahlen)
  unless(array_von_zahlen.is_a? Array) then raise ArgumentError, "#{array_von_zahlen} is kein Array"; end
  unless(array_von_zahlen.all? { |zahl| zahl.is_a? Numeric }) then raise ArgumentError , "das gegebene Array enthält ungültige Zahlen"; end

  return array_von_zahlen.map do |zahl|
    kleiner_teiler = zahl.round - (zahl.round % 5)
    groeßer_teiler = zahl.round - (zahl.round % (-5))

    (zahl.abs - kleiner_teiler.abs).abs < (zahl.abs - groeßer_teiler.abs).abs ? kleiner_teiler : groeßer_teiler
  end
end