Nochmal als Haskell-Programm:
Code:
rome num pos s = do
let myVal = rv !! pos
if myVal <= num
then do
rome (num - myVal) pos (s ++ (rc !! pos))
else if num > 0
then rome num (pos + 1) s
else putStrLn s
where
rc = ["M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"]
rv = [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1]
main = do
putStrLn "Zahl: "
n <- getLine
rome (read n) 0 "Ergebnis: " Wenn ich wieder Unsinn gebaut habe: Über konstruktive Verbesserungsvorschläge freue ich mich immer!