Zahlen sprechen


1. Aufgabe

Schreiben Sie Zahlen so, wie man Sie spricht.

Im Deutschen wird zum Beispiel aus 1056 das Wort eintausendsechsundfünfzig.

Die Eingabe besteht aus einer natürlichen Zahl, genauer einer Folge von Ziffern ohne führende Nullen und ohne eingestreute Leerzeichen. Zahlen 1#1 brauchen nicht ausgeschrieben werden (eine solche Zahl umspannt die zur Zeit vorstellbare Welt vom kleinsten Elementarteilchen bis zu den Galaxienhaufen).

Die gewünschte Sprache wird dem Programm in einem Zwei-Buchstaben-Code nach ISO 3166 übergeben, zunächst sind realisiert:

DE fr Deutsch
ES fr Spanisch
FR fr Franz”sisch
GB fr Englisch
IE fr Irisch (Gälisch)
IT fr Italienisch
LT fr Latein
Ausgeschrieben soll nur eine (die männliche) Variante des Zahlworts. In der Ausgabe soll nach jeder Potenz von 1000 ein Zeilenwechsel eingeschoben werden. Die Zahlwörter werden je nach Sprache durch Leerzeichen, Bindestriche oder und getrennt.


2. Anwendungen

Die Aufgabe ist vor allem eine gute Programmierübung, da sie sehr einfach zu beschreiben ist. Andere Anwendungen sind denkbar:


3. Beobachtungen und Schwierigkeiten

Null und Eins nehmen offenbar eine Sonderstellung ein. Wie werden die Zahlwörter in den einzelnen voneinander getrennt (gar nicht, durch Leerzeichen, Bindestriche, und)? Wie wird weitergezählt (Oktillionen, Nonillionen)? Das Programm ist nicht ganz einfach, aber auch nicht besonders schwierig. Unsystematische Erscheinungen bei den Zehnern und zwischen 11 und 19, die erw„hnten Fgezeichen und die Deklination der Adjektive in bestimmten Sprachen bereiten noch die meisten Schwierigkeiten bei der Programmierung. Es werden pro Sprache rund 100 Zeilen benötigt fr den Algorithmus ben”tigt. Vor (und nach) dem Programmieren muá man die Zahlwörter der Sprache aber nicht unbedingt beherrschen. Obwohl der Aufwand für das Programm hoch erscheint, hat es den Vorteil, daá der Rechner sehr zuverlässig und schnell beliebige Zahlwörter in vielen Sprachen produzieren kann.


4. Variationen

Das Programm kann in viele verschiedene Richtungen erweitert bzw. eingeschränkt werden: