Code-Beispiel
Zahl > In Worten
Lizenz: | Erster Autor: | Letzte Bearbeitung: |
k. A. | Volta | 16.10.2010 |
Ein "Kellerfund" aus QB-Zeiten.
Das Kompilieren mit FB war in einer Minute erledigt.
' Programm: INWORTEN.BAS
' Funktion: Umwandlung Zahl nach Wort , z.B. Scheck, Kaufvertrag
#lang "qb"
DefInt A-Z
Declare Sub InWorten (wert&, b$)
Cls
Print "Geben Sie eine Zahl ein, Sie erhalten als Ausgabe"
Print "die Zahl in Worten :"
Input wert&
Call InWorten(wert&, b$)
Print b$
sleep
Sub InWorten (zwert&, b$)
Dim a$(20), c$(3)
'Alle vorkommenden Zahlen als Wort
a$(1) = "ein": a$(2) = "zwei": a$(3) = "drei"
a$(4) = "vier": a$(5) = "fnf": a$(6) = "sechs"
a$(7) = "sieben": a$(8) = "acht": a$(9) = "neun"
a$(10) = "zehn": a$(11) = "elf": a$(12) = "zw”lf"
For n = 3 To 9
a$(n + 10) = a$(n) + a$(10)
Next
'Ausnahmen
a$(17) = "siebzehn": a$(20) = "zwanzig"
'Potenzen
c$(1) = "millionen": c$(2) = "tausend": c$(3) = "hundert"
b$ = ""
For n = 1 To 3 'tausender Sprünge
x& = 10 ^ (9 - n * 3)
w = zwert& \ x&
zwert& = zwert& - w * x&
If w <> 0 Then
h = w \ 100 'h = hunderter
e = w - h * 100 'e = zehner einer
If h > 0 Then b$ = b$ + a$(h) + c$(3)
If e > 0 Then
If e < 21 Then
b$ = b$ + a$(e)
If e = 1 Then b$ = b$ + "s" 'nicht einhundertein
Else
y = e
z = y \ 10 'nur zehner da > 20
e = y - z * 10 'einer
If e > 0 Then b$ = b$ + a$(e) + "und" 'Bindewort
If z = 2 Then 'nicht zweizig
b$ = b$ + "zwan"
Else
b$ = b$ + Left$(a$(z), 4)
End If
h$ = "zig"
If z = 3 Then h$ = "áig" 'Ausnahme "dreißig"
b$ = b$ + h$
End If
End If
If n < 3 Then b$ = b$ + c$(n) 'nicht am Schluß anhängen
End If
Next
End Sub
Tipp: Einige Codes für die Darstellung einer Zahl in Worten auf Englisch finden sich im internationalen Forum: Numbers to words (US English) (auf der Seite etwas nach unten scrollen).
Hier Code-Version hinzugefügt, die mit -lang fb compilierbar ist:
' Programm: INWORTEN.BAS
' Funktion: Umwandlung Zahl nach Wort , z.B. Scheck, Kaufvertrag
Dim As Integer wert
Declare Function InWorten (zwert As Integer) As String
Cls
Print "Geben Sie eine Zahl ein, Sie erhalten als Ausgabe"
Print "die Zahl in Worten :"
Input wert
Print InWorten(wert)
sleep
Function InWorten (zwert As Integer) As String
Dim As Integer e, h, n, w, x, y, z
Dim As String c(1 To 3), b, d
'Alle vorkommenden Zahlen als Wort
Dim As String a(1 To 20) = {"ein", "zwei", "drei", "vier", "fnf", _
"sechs", "sieben", "acht", "neun", "zehn", "elf", "zw”lf"}
For n = 3 To 9
a(n + 10) = a(n) + a(10)
Next
'Ausnahmen
a(17) = "siebzehn": a(20) = "zwanzig"
'Potenzen
c(1) = "millionen": c(2) = "tausend": c(3) = "hundert"
b = ""
For n = 1 To 3 'tausender Sprünge
x = 10 ^ (9 - n * 3)
w = zwert \ x
zwert = zwert - w * x
If w <> 0 Then
h = w \ 100 'h = hunderter
e = w - h * 100 'e = zehner einer
If h > 0 Then b = b + a(h) + c(3)
If e > 0 Then
If e < 21 Then
b = b + a(e)
If e = 1 Then b = b + "s" 'nicht einhundertein
Else
y = e
z = y \ 10 'nur zehner da > 20
e = y - z * 10 'einer
If e > 0 Then b = b + a(e) + "und" 'Bindewort
If z = 2 Then 'nicht zweizig
b = b + "zwan"
Else
b = b + Left(a(z), 4)
End If
d = "zig"
If z = 3 Then d = "áig" 'Ausnahme "dreißig"
b = b + d
End If
End If
If n < 3 Then b = b + c(n) 'nicht am Schluß anhängen
End If
Next
Function = b
End Function
Zusätzliche Informationen und Funktionen |
- Das Code-Beispiel wurde am 24.08.2010 von Volta angelegt.
- Die aktuellste Version wurde am 16.10.2010 von Volta gespeichert.
|
|