Übungen
Aufgabe 1
Manchmal muss man eine natürliche Zahl in ihre Bestandteile zerlegen. Hierfür kann man die folgenden Funktionen benutzen.
einer: Int -> Int
einer zahl =
modBy 10 zahl
zehner: Int -> Int
zehner zahl =
(modBy 100 zahl) // 10
hunderter: Int -> Int
hunderter zahl =
...
(a) Erstelle ein Modul mit diesen Funktionen und teste das Modul.
(b) Nutze das Modul, um dreistellige natürliche Zahlen so darzustellen:
237 -> "2H3Z7E" 45 -> "0H4Z5E"
Modelliere hierzu zunächst eine geeignete Funktion und entwickle anschließend eine Funktionsdefinition (die die Funktionen aus dem vorab entwickelten Modul verwendet).
Hinweis: Int
-Zahlen kann man mit der vordefinierten Funktion String.fromInt
in Zeichenketten umwandeln.
> String.fromInt 2
"2" : String
(c) (etwas schwieriger) Nutze das passend erweiterte Modul, um eine Funktion zu entwickeln, mit der man vierstellige Jahreszahlen in vereinfachte römische Zahldarstellungen umzuwandeln kann. Als Vereinfachung erlauben wir, mehrere gleiche Zahlzeichen zu verwenden. Hier einige Beispiele:
2023 -> "MMXXIII" 2029 -> "MMXXIIIIIIIII" 1994 -> "MCCCCCCCCCXXXXXXXXXIIII"
Hinweis: Mehrere identische Zeichen kann man mit der vordefinierten Funktion String.repeat
generieren.
> String.repeat 4 "X"
"XXXX" : String