Szybkie szukanie
Słowo kluczowe:
niedziela, 01 sierpień 2010
Start arrow Tips & Tricks arrow Zamiana liczba na ich słowne odpowiedniki.(przysłał GizberN)
Google
 
Zamiana liczba na ich słowne odpowiedniki.(przysłał GizberN) Drukuj E-mail
Napisał Administrator   
wtorek, 24 styczeń 2006
Zamiana liczby na tekst
np. 2367 =dwa tysiące trzysta sześdziesiąt siedem
często jest to przydatne gdy program powinien wypisać wartość słownie.


Starałem się trochę opisać jak to działa, ale gdyby były jakieś pytania, albo coś by się kopało to a postaram się odpowiedzieć.

Pozatym jeśli by ktoś poprawił to wszystko tak aby wyglądało i działało trochę zgrabniej to proszę o E-mila, ja w trakcie samego pisania zorientowałem się że można o wiele prościej, ale już za daleko zalazłem i nie chciało mi się poprawiać, pozatym czas mnie gonił.

UWAGA : w procedurach mogą zanjdować się zmienne lub funkcje które pochodzą z mojego programu a które nie zawsze są potrzebne.


-=GizberN=-

Zmienne które należy umieścić w (General ) (Declarations)

Dim liczba As String ' zmienna dla zamiany liczby na tekst
Dim cyfra, kwota_wpłaty As String 'zmienne dla zamiany liczby na tekst
Dim d1, d2, d3, d4, d5, dodatek As String ' pomocnicze zmienne dla zamiany liczby na tekst
Dim text, text_1, text_2, text_3, text_4 As String ' zmienne dla zamiany liczby na teks
Dim liczba As Integer ' liczba jaka ma być zamieniona na tekst
Private Sub wywołanie()

text_4 = "" ' czyszczenie zmiennych
text_3 = ""
text_2 = ""
text_1 = ""
text = ""
d4 = ""
d5 = ""
dodatek = ""
wartosci_slownie ' wywołanie procedury zamieniającej liczbę na tekst
kwota_wpłaty = text_4 + " " + text_3 + " " + text_2 + " " + text_1 + " " + text ' tutaj powstaje tekst jaki po zamianie liczby na tekst - poszczególne zmienne odpowiadają za miejsca w danej liczbie

liczba= wartosc 'tutaj należy podać wartość jaka ma być zamieniona na tekst 0100000
End If

End Sub



Public Sub wartosci_slownie()

'sprawdzanie wartości liczby i rozbijanie jej na poszczególne składowe

Select Case Fix(CCur(liczba)) 'sprawdzanie do którego przedziału liczbowego wartość należy i wywoływanie odpowiednich procedur


Case Is < 10
cyfra = Right(liczba, 1)
jedynka

Case Is < 20
cyfra = Right(liczba, 2)
naście

Case Is < 100
liczba = Right(liczba, 2)
cyfra = Left(liczba, 1)
dziesiątka
cyfra = Right(liczba, 1)
jedynka

Case Is < 1000
cyfra = Right(liczba, 3)
cyfra = Left(cyfra, 1)
setka

If Right(liczba, 2) < 10 Then 'sprzawdzanie czy cyfra posiada 01
cyfra = Right(liczba, 1)
jedynka
End If

If Right(liczba, 2) < 20 Then 'sprzawdzanie czy liczba posiada naście
cyfra = Right(liczba, 2)
naście
Else 'cyfra musi mieć końcówkę dziesiąt
cyfra = Right(liczba, 2)
cyfra = Left(cyfra, 1)
dziesiątka
cyfra = Right(liczba, 1)
jedynka
End If

Case Is < 10000
cyfra = Right(liczba, 4)
cyfra = Left(cyfra, 1)
tysiąc
cyfra = Right(liczba, 3)
If cyfra > 20 Then
cyfra = Left(cyfra, 1)
setka
If Right(liczba, 2) < 10 Then
cyfra = Right(liczba, 1)
jedynka
End If
Else
cyfra = Right(liczba, 2)
If cyfra < 10 Then
jedynka
Else
naście
End If
End If


If Right(liczba, 2) < 20 Then
cyfra = Right(liczba, 2)
naście
Else
cyfra = Right(liczba, 2)
cyfra = Left(cyfra, 1)
dziesiątka
cyfra = Right(liczba, 1)
jedynka
End If

Case Is < 100000


cyfra = Left(liczba, 2)
If cyfra < 20 Then ' sprawdzanie czy początek cyfry to naście
naście
d5 = text_1 + " tysięcy"
cyfra = Right(liczba, 3)
cyfra = Left(cyfra, 1)
setka
cyfra = Right(liczba, 2)
If cyfra < 10 Then jedynka
If cyfra < 20 Then
naście
Else
cyfra = Right(liczba, 2)
cyfra = Left(cyfra, 1)
dziesiątka
End If
Else
cyfra = Left(cyfra, 1)
dziesiątka
d5 = text_1
text_1 = ""
cyfra = Right$(CStr(liczba), 4)
cyfra = Left(cyfra, 1)
jedynka
If cyfra = 2 Or cyfra = 3 Or cyfra = 4 Then
dodatek = " tysiące "
Else
dodatek = " tysięcy "
End If

d4 = text
text = ""

cyfra = Right(liczba, 3)
cyfra = Left(cyfra, 1)

'sprawdzanie końcowych 3 cyfr


setka
cyfra = Right(liczba, 2)
If cyfra < 10 Then
jedynka
End If

' sprawdzanie końcowych 2 - cyfr

If cyfra < 10 Then jedynka
If cyfra < 20 Then
naście
Else
cyfra = Right(liczba, 2)
cyfra = Left(cyfra, 1)
dziesiątka
'd = text_1
cyfra = Right(liczba, 1)
jedynka
'd1 = text
End If

End If
text_4 = d5 + " " + d4 + dodatek
End Select

End Sub


Public Sub jedynka() 'procedury przypożądkowujące wartości złowne poszczególnym zmiennym odpowiadającym za zamianę cyfry w liczbie na wartość słowną.

Select Case CCur(cyfra)

Case 0
text = ""
Case 1
text = "jeden"
Case 2
text = "dwa"
Case 3
text = "trzy"
Case 4
text = "cztery"
Case 5
text = "pięć"
Case 6
text = "sześć"
Case 7
text = "siedem"
Case 8
text = "osiem"
Case 9
text = "dziewięć"

End Select

End Sub


Public Sub dziesiątka()

Select Case cyfra

Case 0
text_1 = ""

Case 1
text_1 = "dziesięć"

Case 2
text_1 = "dwadzieścia"

Case 3
text_1 = "trzydzieści"

Case 4
text_1 = "czterdzieści"

Case 5
text_1 = "piędziesiąt"

Case 6
text_1 = "sześćdziesiąt"

Case 7
text_1 = "siedemdziesiąt"

Case 8
text_1 = "osiemdziesiąt"

Case 9
text_1 = "dziewiędziesiąt"

End Select
End Sub

Public Sub setka()

Select Case cyfra

Case 0
text_2 = ""
Case 1
text_2 = "sto"
Case 2
text_2 = "dwieście"
Case 3
text_2 = "trzysta"
Case 4
text_2 = "czterysta"
Case 5
text_2 = "pięćset"
Case 6
text_2 = "sześćset"
Case 7
text_2 = "siedemset"
Case 8
text_2 = "osiemset"
Case 9
text_2 = "dziewięćset"

End Select
End Sub

Public Sub naście()
text_1 = ""
Select Case cyfra

Case 10
text_1 = "dziesięć"

Case 11
text_1 = "jedynaście"

Case 12
text_1 = "dwanaście"

Case 13
text_1 = "trzynaście"

Case 14
text_1 = "czternaście"

Case 15
text_1 = "pietnaście"

Case 16
text_1 = "szesnaście"

Case 17
text_1 = "siedemnaście"

Case 18
text_1 = "osiemnaście"

Case 19
text_1 = "dziewietnaście"

Case 20
text_1 = "dwadzieścia"
End Select

End Sub

Public Sub tysiąc()

Select Case cyfra
Case 1
text_3 = "tysiąc"
Case 2
text_3 = "dwa tysiące"
Case 3
text_3 = "trzy tysiące"
Case 4
text_3 = "czter tysiące"
Case 5
text_3 = "pięć tysięcy"
Case 6
text_3 = "sześć tysięcy"
Case 7
text_3 = "siedem tysięcy"
Case 8
text_3 = "osiem tysięcy"
Case 9
text_3 = "dziewięć tysięcy"

End Select

End Sub

Komentarze
Dodane przez jakubkameleon w dniu - 2006-11-03 18:37:39
dzi?ki tego szuka?em

Aby dodać komentarz zaloguj się. Jeśli nie masz konta, załóż je sobie.
Tylko zarejestrowani użytkownicy mogą pisać komentarze.

Powered by AkoComment 2.0!

< Poprzedni   Następny >

Menu główne
Start
Teoria
VB.NET
Api
Tips & Tricks
Warsztat
VBMagazine
Pliki
Forum
Literatura
Ankiety
Linki
Szukaj
Wyślij program
Napisz do nas
Redakcja
Logowanie
Login

Hasło

Zapamiętaj mnie
Nie pamiętasz hasła?
Nie masz konta? Załóż je sobie
Gościmy
Aktualnie jest 125 gości online
Statystyka
Użytkownicy: 10811
Newsy: 230
Odnośniki: 47
Odwiedzających: 3427092
Mambo is Free Software released under the GNU/GPL License.