Buchempfehlung
Windows-Programmierung. Das Entwicklerhandbuch zur WIN32-API
Windows-Programmierung. Das Entwicklerhandbuch zur WIN32-API
"Der" Petzold, das über 1000 Seiten starke Standardwerk zum Win32-API - besonders nützlich u. a. bei der GUI-Programmierung in FreeBASIC! [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

Code-Beispiel

Code-Beispiele » Kleine Helferlein

Zahl > In Worten

Lizenz:Erster Autor:Letzte Bearbeitung:
k. A.RedakteurVolta 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: Externer Link!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 RedakteurVolta angelegt.
  • Die aktuellste Version wurde am 16.10.2010 von RedakteurVolta gespeichert.
  Bearbeiten Bearbeiten  

  Versionen Versionen