XXI a. kasdienybės dienoraštis

Bemieges naktis prisimenant… programuotojas

Išrašant sąskaitas, turi būti rašoma galutinė suma skaičiais ir žodžiais. Visų plačiai naudojamas „Microsoft Excel“ neturi funkcijos, kuri valiutos tipo duomenį verstų lietuvių kalba pilnu tekstiniu pavidalu. Tad reikia rašyti patiems – arba programuoti 🙂 Kaip bebūtų keista (programavimas „Windows“ sistemoje tikrai nėra mano stiprioji pusė), užduotį įveikiau! Čia galite atsisiųsti (nekomerciniam naudojimui, komercinė licencija – 1 litas :)) pavyzdį, kad funkcija veikia.

Function num_txt(a)

s1 = “”
s2 = “”
s3 = “”
s4 = “”
s5 = “”
s6 = “”

liekana = Int((a – Int(a)) * 100)
liekana_txt = CStr(liekana)

a2 = a – liekana / 100

b1 = a2 Mod 10
b2 = a2 \ 10 Mod 10
b3 = a2 \ 100 Mod 10
b4 = a2 \ 1000 Mod 10
b5 = a2 \ 10000 Mod 10
b6 = a2 \ 100000 Mod 10

If b2 <> 1 Then
If (b1 = 9) Then
s1 = “devyni”
ElseIf b1 = 8 Then s1 = “aštuoni”
ElseIf b1 = 7 Then s1 = “septyni”
ElseIf b1 = 6 Then s1 = “šeši”
ElseIf b1 = 5 Then s1 = “penki”
ElseIf b1 = 4 Then s1 = “keturi”
ElseIf b1 = 3 Then s1 = “trys”
ElseIf b1 = 2 Then s1 = “du”
ElseIf b1 = 1 Then s1 = “vienas”
Else
End If
End If

If b2 = 9 Then
s2 = “devyniasdešimt”
ElseIf b2 = 8 Then s2 = “aštuoniasdešimt”
ElseIf b2 = 7 Then s2 = “septyniasdešimt”
ElseIf b2 = 6 Then s2 = “šešiasdešimt”
ElseIf b2 = 5 Then s2 = “penkiasdešimt”
ElseIf b2 = 4 Then s2 = “keturiasdešimt”
ElseIf b2 = 3 Then s2 = “trisdešimt”
ElseIf b2 = 2 Then s2 = “dvidešimt”
ElseIf b2 = 1 Then
If b1 = 9 Then
s2 = “devyniolika”
ElseIf b1 = 8 Then s2 = “aštuoniolika”
ElseIf b1 = 7 Then s2 = “septyniolika”
ElseIf b1 = 6 Then s2 = “šešiolika”
ElseIf b1 = 5 Then s2 = “penkiolika”
ElseIf b1 = 4 Then s2 = “keturiolika”
ElseIf b1 = 3 Then s2 = “trylika”
ElseIf b1 = 2 Then s2 = “dvylika”
ElseIf b1 = 1 Then s2 = “vienuolika”
ElseIf b1 = 0 Then s2 = “dešimt”
End If
End If

If b3 = 9 Then
s3 = “devyni šimtai”
ElseIf b3 = 8 Then s3 = “aštuoni šimtai”
ElseIf b3 = 7 Then s3 = “septyni šimtai”
ElseIf b3 = 6 Then s3 = “šeši šimtai”
ElseIf b3 = 5 Then s3 = “penki šimtai”
ElseIf b3 = 4 Then s3 = “keturi šimtai”
ElseIf b3 = 3 Then s3 = “trys šimtai”
ElseIf b3 = 2 Then s3 = “du šimtai”
ElseIf b3 = 1 Then s3 = “šimtas”
End If

If s3 <> “” Then s3 = s3 + ” ”
If s2 <> “” Then s2 = s2 + ” ”
If s1 <> “” Then s1 = s1 + ” ”

If a >= 1 Then skaičius = s3 + s2 + s1 + “Lt”

If b5 <> 1 Then
If b4 = 9 Then
s1 = “devyni tūkstančiai”
ElseIf b4 = 8 Then s4 = “aštuoni tūkstančiai”
ElseIf b4 = 7 Then s4 = “septyni tūkstančiai”
ElseIf b4 = 6 Then s4 = “šeši tūkstančiai”
ElseIf b4 = 5 Then s4 = “penki tūkstančiai”
ElseIf b4 = 4 Then s4 = “keturi tūkstančiai”
ElseIf b4 = 3 Then s4 = “trys tūkstančiai”
ElseIf b4 = 2 Then s4 = “du tūkstančiai”
ElseIf b4 = 1 Then s4 = “vienas tūkstantis”
End If
End If

If b4 = 0 Then
If (b5 > 0) Or (b6 > 0) Then s4 = “tūkstančių”
End If

If b5 = 9 Then
s5 = “devyniasdešimt”
ElseIf b5 = 8 Then s5 = “aštuoniasdešimt”
ElseIf b5 = 7 Then s5 = “septyniasdešimt”
ElseIf b5 = 6 Then s5 = “šešiasdešimt”
ElseIf b5 = 5 Then s5 = “penkiasdešimt”
ElseIf b5 = 4 Then s5 = “keturiasdešimt”
ElseIf b5 = 3 Then s5 = “trisdešimt”
ElseIf b5 = 2 Then s5 = “dvidešimt”
ElseIf b5 = 1 Then
If b4 = 9 Then
s5 = “devyniolika tūkstančių”
ElseIf b4 = 8 Then s5 = “aštuoniolika tūkstančių”
ElseIf b4 = 7 Then s5 = “septyniolika tūkstančių”
ElseIf b4 = 6 Then s5 = “šešiolika tūkstančių”
ElseIf b4 = 5 Then s5 = “penkiolika tūkstančių”
ElseIf b4 = 4 Then s5 = “keturiolika tūkstančių”
ElseIf b4 = 3 Then s5 = “trylika tūkstančių”
ElseIf b4 = 2 Then s5 = “dvylika tūkstančių”
ElseIf b4 = 1 Then s5 = “vienuolika tūkstančių”
ElseIf b4 = 0 Then s5 = “dešimt tūkstančių”
End If
End If

If b6 = 9 Then
s6 = “devyni šimtai”
ElseIf b6 = 8 Then s6 = “aštuoni šimtai”
ElseIf b6 = 7 Then s6 = “septyni šimtai”
ElseIf b6 = 6 Then s6 = “šeši šimtai”
ElseIf b6 = 5 Then s6 = “penki šimtai”
ElseIf b6 = 4 Then s6 = “keturi šimtai”
ElseIf b6 = 3 Then s6 = “trys šimtai”
ElseIf b6 = 2 Then s6 = “du šimtai”
ElseIf b6 = 1 Then s6 = “šimtas”
End If

If s6 <> “” Then s6 = s6 + ” ”
If s5 <> “” Then s5 = s5 + ” ”
If s4 <> “” Then s4 = s4 + ” ”

skaičius = s6 + s5 + s4 + skaičius

If liekana <> 0 Then If skaičius <> “” Then skaičius = skaičius + ” ” + liekana_txt + ” cnt” Else skaičius = liekana_txt + ” cnt”

If a >= 1 Then skaičius = Chr(Asc(Mid(skaičius, 1, 1)) – 32) + Mid(skaičius, 2, Len(skaičius) – 1)

num_txt = skaičius

End Function

Neatsitiktinai, matyt, tris kartus buvau patekęs į respublikinių moksleivių olimpiadų finalinį etapą. Vat ir dabar dar įgūdžių likę, sugebu vieną kitą funkciją prisiminti ir programuoti 🙂

3 Comments

  1. Simas

    Na, sita dalyka, kai prireike zmonai, radau internete. Nemegstu is naujo isradineti dviracio. Juo labiau girtis… Is informatikos ir programavimo, vidurineje, vos gavau 4-ta… Specialiai to niekada nesimokiau, bet stai VBA jau praktiskai perkandau… Zinoma, isskirtinai savo reikmem, nes kasdienybeje jo (programavimo) man ne kiek nereikia, bet palenginimu darbui su exel reikia kasdien…

  2. jurkis

    Kažkur internete voliojasi makrokomanda kaip tą patį atlikti. Berods, kažkur ir pats turiu.
    O gal kas galėtų parašyti OOo’ui, ne tik Exeliui?

  3. stb

    ne i tema ,bet Liutaurai mesk ta babaju bruda kaip kaljanas…gal jau maratonuose nebestartuosi? 🙂

Leave a Reply

Your email address will not be published.