Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Libor Šimo (libcosenior):4.2.2016 15:22

Ahoj,
dopísal by niekto k uvedenému kódu dobrý komentár? Ide mi o to, aby som ho úplne a správne pochopil.

Function Slovom(Cis As Double) As String
Dim StrCis As String
Dim LenCis As Byte, Rad As Integer, Ofs As Byte
Dim Pol As Byte, pom As String, pom1 As String, pom2 As String
Dim Jedn As Variant, Des1 As Variant, Des As Variant, Sta As Variant
Dim JednTM As Variant, Tis As Variant, Mil As Variant
'
If IsEmpty(Cis) Then End
'
Jedn = Array("", "jedna", "dva", "tri", "štyri", _
"päť", "šesť", "sedem", "osem", "deväť")
Des1 = Array("desať", "jedenásť", "dvanásť", "trinásť", "štrnásť", _
"päťnásť", "šesťnásť", "sedmnásť", "osmnásť", "deväťnásť")
Des = Array("", "", "dvadsať", "tridsať", "štyridsať", "päťdesiat", _
"šesťdesiat", "sedemdesiat", "osemdesiat", "deväťdesiat")
Sta = Array("", "jednosto", "dvesto", "tristo", "štyristo", _
"päťsto", "šesťsto", "sedemsto", "osemsto", "deväťsto")
Tis = Array("tisíc", "tisíc", "tisíc", "tisíc", "tisíc", _
"tisíc", "tisíc", "tisíc", "tisíc", "tisíc")
JednTM = Array("", "jeden", "dve", "tri", "štyri", _
"päť", "šesť", "sedem", "osem", "deväť")
Mil = Array("milionov", "milion", "miliony", "miliony", "miliony", _
"milionov", "milionov", "milionov", "milionov", "milionov")
'
'
StrCis = CStr(Format(Cis, "0.00"))
Pol = InStr(StrCis, ",") - 1 ' poloha radu jednotek v cisle
If Pol > 9 Then Slovom = ">999 999 999": Exit Function
Rad = 0 ' rad cislice v cisle
Slovom = ""
Do
pom = Mid(StrCis, Pol, 1)
If Pol > 1 Then
pom1 = Mid(StrCis, Pol - 1, 1)
Else
pom1 = "0"
End If
'
Select Case Rad
Case 0
pom2 = IIf(pom1 <> 1, Jedn(pom), Des1(pom)): Ofs = IIf(pom1 <> 1, 1, 2)
Case 1
pom2 = Des(pom): Ofs = 1
Case 2
pom2 = Sta(pom): Ofs = 1
Case 3
pom2 = IIf(pom1 <> 1, JednTM(pom), Des1(pom)): Ofs = IIf(pom1 <> 1, 1, 2)
If Pol > 3 Then ' kdyz zustavaji jeste >3 cislice
If Mid(StrCis, Pol - 2, 3) <> "000" Then
pom2 = pom2 & IIf(pom1 <> 1, Tis(pom), "tisíc") ' a jsou i tisice -> vlozeni slova tisic
Else
Ofs = 3 ' preskoci na rad 6 - miliony
End If
Else ' kdyz zustava jeste <3 cislice -> vlozeni slova tisic
pom2 = pom2 & IIf(pom1 <> 1, Tis(pom), "tisíc")
End If
Case 4
pom2 = Des(pom): Ofs = 1
Case 5
pom2 = Sta(pom): Ofs = 1
Case 6
pom2 = IIf(pom1 <> 1, JednTM(pom) & Mil(pom), Des1(pom) & "miliónov"): Ofs = IIf(pom1 <> 1, 1, 2)
Case 7
pom2 = Des(pom): Ofs = 1
Case 8
pom2 = Sta(pom): Ofs = 1
End Select
'
Slovom = pom2 & Slovom
Pol = Pol - Ofs: Rad = Rad + Ofs
'
Loop While Pol > 0
Slovom = Trim(Slovom) ' & " " & Right(StrCis, 2) ' pridani destinne casti
End Function
Odpovědět
4.2.2016 15:22
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Michal Huff
Člen
Avatar
Michal Huff:2.4.2016 22:00

ja bych rekl ze to vytvori funkci, ktera ma prevest cislo (1) na slovo (jedna)

 
Nahoru Odpovědět
2.4.2016 22:00
Avatar
Odpovídá na Michal Huff
Libor Šimo (libcosenior):3.4.2016 14:21

Ten kod ma previest cislo numericky na cislo foneticky.

Akceptované řešení
+5 Zkušeností
Řešení problému
Nahoru Odpovědět
3.4.2016 14:21
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.