'........ UWAGA .................... 'Autor nie bierze odpowiedzialnosci, za ewentualne niew³asciwe dzia³anie programu ;-) 'W FUNKCJI CELOWO ZOSTAL ZASZYTY PEWIEN B£¡D, zatem bezmyslne kopiowanie i wpinanie funkcji do wlasnych komercyjnych aplikacji nie jest wskazane '...................................
Dim tys_pusty As Boolean Dim mln_pusty As Boolean Dim ile_cyfr As Integer Dim liczba As Variant Dim i As Integer Dim temp As String Dim jednosci As Variant Dim dziesiatki As Variant Dim setki As Variant Dim tys As Variant Dim milion As Variant Dim miliard As Variant Dim bilion As Variant
For i = 1 To ile_cyfr Select Case ((3 + (ile_cyfr - i)) Mod 3) Case 1 If ((ile_cyfr > 1) And (Val(Mid(napis, (i), 2)) < 20) And (Val(Mid(napis, (i), 2)) > 10)) Then slownie = slownie & nascie(Val(Mid(napis, i + 1, 1))) i = i + 1 flgnast = True Else slownie = slownie & dziesiatki(Val(Mid(napis, i, 1))) End If
Case 0 slownie = slownie & jednosci(Val(Mid(napis, i, 1)))
Case Else slownie = slownie & setki(Val(Mid(napis, i, 1))) End Select
If ((ile_cyfr - i) = 12) Then Select Case Val(Mid(napis, i, 1)) Case 1 If (ile_cyfr) > 13 Then slownie = slownie & bilion(3) Else slownie = slownie & bilion(1) End If Case 2 To 4 slownie = slownie & bilion(2) Case Else slownie = slownie & bilion(3) End Select End If
If (ile_cyfr - i) = 9 Then
If flgnast = True Then slownie = slownie & miliard(3) flgnast = False Else Select Case Val(Mid(napis, i, 1)) Case 1 If (ile_cyfr) > 10 Then slownie = slownie & miliard(3) Else slownie = slownie & miliard(1) End If Case 2 To 4 slownie = slownie & miliard(2) Case Else slownie = slownie & miliard(3) End Select End If End If
If (ile_cyfr - i) = 6 Then If (Val(Mid(napis, (i + 1), 3)) = 0) Then tys_pusty = True End If
If flgnast = True Then slownie = slownie & milion(3) flgnast = False Else Select Case Val(Mid(napis, i, 1)) Case 1 If (ile_cyfr) > 7 Then slownie = slownie & milion(3) Else slownie = slownie & milion(1) End If Case 2 To 4 slownie = slownie & milion(2) Case Else slownie = slownie & milion(3) End Select End If End If
If ((ile_cyfr - i) = 3 And tys_pusty = False) Then If flgnast = True Then slownie = slownie & tys(3) flgnast = False Else Select Case Val(Mid(napis, i, 1)) Case 1 If (ile_cyfr) > 4 Then slownie = slownie & tys(3) Else slownie = slownie & tys(1) End If Case 2 To 4 slownie = slownie & tys(2) Case Else slownie = slownie & tys(3) End Select End If End If
B?edy w funkcji Dodane przez bartek w dniu - 2006-09-20 23:10:28Przyznaje sie zatem do b?edów: 1. Nie ma opcji odmiany wyrazu bilion w przypadku "-nastu" (miliardy,miliony,tysiace maja t± opcj?). 2. W przypadku podania duzej liczby, w ktorej milionow lub mililardów b?dzie równa 0, program mimo to je wypisze - co oczywiscie nie jest pooprawne.
Aby dodaæ komentarz zaloguj siê. Je¶li nie masz konta, za³ó¿ je sobie. Tylko zarejestrowani u¿ytkownicy mog± pisaæ komentarze.