Warning: Illegal string offset 'status' in /home2/icentarb/public_html/icentar/print.php on line 190

Warning: Illegal string offset 'status' in /home2/icentarb/public_html/icentar/print.php on line 190

Warning: Illegal string offset 'status' in /home2/icentarb/public_html/icentar/print.php on line 190

Warning: Illegal string offset 'status' in /home2/icentarb/public_html/icentar/print.php on line 190

Warning: Illegal string offset 'status' in /home2/icentarb/public_html/icentar/print.php on line 190
iCentar » Racunari i oprema » Programirannje i baze podataka » Access » konvert broja u slovo
nevsad 21.10.2016 09:16
Predmet:konvert broja u slovo

imam funkciju koja broj 1824 pretvori u 1823 slovom
neznam gdje je greska
pozdrav

Function slovima(broj)
On Error Resume Next
If broj = 0 Then
slovima = "nula"
Exit Function
End If

ReDim imebr(9)
imebr(1) = "jedan"
imebr(2) = "dva"
imebr(3) = "tri"
imebr(4) = "četiri"
imebr(5) = "pet"
imebr(6) = "šest"
imebr(7) = "sedam"
imebr(8) = "osam"
imebr(9) = "devet"

rez = ""
celi = Int(broj)
dec = ((broj - celi) * 100) Mod 100
cbr = Str(celi)
duzina = 16 - Len(cbr)
cbroj = String(duzina, "0") & right(cbr, Len(cbr) - 1)

i = 1

Do While i < 15
tric = Mid(cbroj, i, 3)
trojka = Val(tric)

If tric <> "000" Then
cs = Val(Mid(tric, 1, 1))
cd = Val(Mid(tric, 2, 1))
cj = Val(Mid(tric, 3, 1))
Select Case cs
Case 2
rez = rez & "dvije"
Case Is > 2
rez = rez & imebr(cs)
End Select

Select Case cs
Case 1
rez = rez & "stotinu"
Case 2, 3, 4
rez = rez & "stotine"
Case Is > 4
rez = rez & "stotina"
End Select

If cj = 0 Then sl1 = "" Else sl1 = imebr(cj)

Select Case cd
Case 4
rez = rez & "četr"
Case 6
rez = rez & "šes"
Case 5
rez = rez & "pe"
Case 9
rez = rez & "deve"
Case 2, 3, 7, 8
rez = rez & imebr(cd)
Case 1
sl1 = ""
Select Case cj
Case 0
rez = rez & "deset"
Case 1
rez = rez & "jeda"
Case 4
rez = rez & "četr"
Case Else
rez = rez & imebr(cj)
End Select

If cj > 0 Then rez = rez & "naest"
End Select

If cd > 1 Then rez = rez & "deset"

If (i = 4 Or i = 10) And cd <> 1 Then
If cj = 1 Then
sl1 = "jedna"
ElseIf cj = 2 Then
sl1 = "dvije"
End If
End If

rez = rez & sl1

Select Case i
Case 1
rez = rez & "bilion"
If cj > 1 Or cd = 1 Then rez = rez & "a"
Case 4
rez = rez & "milijard"
If ((trojka Mod 100) > 11 And _
(trojka Mod 100) < 19) Then
rez = rez & "i"
ElseIf cj = 1 Then
rez = rez & "a"
ElseIf cj > 4 Or cj = 0 Then
rez = rez & "i"
ElseIf cj > 1 Then
rez = rez & "e"
End If
Case 7
rez = rez & "milion"
If ((trojka Mod 100) > 11 And _
(trojka Mod 100) < 19) Or cj <> 1 Then
rez = rez & "a"
End If
Case 10
rez = rez & "hiljad"
If ((trojka Mod 100) > 11 And _
(trojka Mod 100) < 19) Or cj = 1 Then
rez = rez & "a"
ElseIf trojka = 1 Then
rez = rez & "u"
ElseIf cj > 4 Or cj = 0 Then
rez = rez & "a"
ElseIf cj > 1 Then
rez = rez & "e"
End If
End Select
End If
i = i + 3
Loop
slovima = rez & Str(dec) & "/100 KM"
End Function

zxz 21.10.2016 09:32
Predmet:Re: konvert broja u slovo

Jel bas zelis gresku da nadjes u svom kodu ili...
Evo kod ima.
http://www.icentar.ba/...st&id=955

nevsad 21.10.2016 09:32
Predmet:Re: konvert broja u slovo

funkcija je dobra
nije valjoa format broja

pozdrav

Avko 26.10.2016 13:47
Predmet:Re: konvert broja u slovo

Recimo da želimo provjeriti kako rade ove funkcije, sa kojim kompajlerom to mozemo vidjeti?
Znaci zanimame neki mali kompjler kojim izvrsim te funkije, koji bi to bio?
ILi ako malo pojasnim, napisem u tom kompajleru str$=slovima(300) ili u zxz slucaju str$=BrSlovima(300)
ispod toga prepisem funkciju, a zatim kliknem RUN i pokaze mi se rezultat?

pmiroslav 26.10.2016 17:20
Predmet:Re: konvert broja u slovo

U Accesu kopiraš kod u neki modul i onda u Immediate Window (Nevsadov primjer) napišeš :

? slovima(12345)
Enter

i dobit ćeš rezultat procedure
Prilozi:
Image1.jpg (Velicina datoteke:196.58 KB)

Avko 26.10.2016 23:22
Predmet:Re: konvert broja u slovo

znaci bez accesa neide?
tako sam i mislio. bilo bi prejednostavno da nije tako.
cini mi se da se radi o VBA jeziku, ali nisam siguran, pa bi to isto moglo raditi i u excelu na isti nacin kako si opisao. probat cu sutra pa javim.
hvala na odgovoru

zxz 27.10.2016 00:21
Predmet:Re: konvert broja u slovo

Mozes ti ovu proceduru prepicati i u c++ i u javu ili neki dru programski jezik.
Ideja je bitna a naredbe nadjes na netu.

Avko 27.10.2016 11:33
Predmet:Re: konvert broja u slovo

uzeo sam pmiroslavov metod, ali sam stavio u excel, jer mi muka od accesa.
Prvo sam stavio funkciju od nevsada, radi perfektno bez greske.
za broj 354 dobio sam odgovor: tristotinepedesetčetiri 0/100 KM, vrijeme 0,0000458158774563344

sada sam sa nekom dozom straha stavio funkciju od zxz-a, i naravno crne slutnje su se obistinile. Javilo mi gresku.
U redu 70, BrSlovima = Strb & ImenaB(DioTri, RodJ, I1) & BrSlovima
poziva se funkcija ImenaB(var1,var2,var3) koja ne postoji.
Sto je tada zxz radio , neznam. Vjerojatno su mu se motala po glavi imena pa je pozvao funkciju imena koje uopce nema.
Zamijenio sam ImenaB sa Cifre(var1,var2,var3) tako da 70-ti red izgleda ovako:
BrSlovima = Strb & Cifre(DioTri, RodJ, I1) & BrSlovima
i ...
ponovo greska, deklaracija var DioTri stavljen je kao String u 14 redu
Dim DioTri As String, deklaracijom kao Integer prolazi jer u redu 55 Str(1) = Cifre(Cifra, I2, I1) var Cifra je deklarirana kao Integer i to ...bla bla bla
znaci
14. Dim DioTri as Integer, da skratimo pricu

sada radi, pa pokrenimo sa BrSlovima(354), a rezultat je:
tristotinepedesetetirideset, cini mi se da daje ovu deset viska
pogledajmo BrSlovima(350)
tristotinepedesetdeset, to je u redu
znaci muce ga decimalno mjesto jedinica, ako je vece od 0 tj. ako je neki broj
u 135 redu zapocinje if uvijet

If PoRedu = 2 Then
If Cifra = 1 Then
Cifre = "naest"
Else
Cifre = Cifre & "deset"
End If

tu nesto ne stima, po meni, ali neznam što. Nakon sto Strb ima ispravnu vrijednost uvijet ispituje Cifra, vrijednost je 5 te prvi uvjet if Cifra=1 nije zadovoljen ali zato ono Else se izvrši i doda "deset"
Neznam kako to riješiti, ali dok se problem ne riješi preporučio bi koristiti nevsadovu funkciju

vrijeme potrebno da se program izvrsi , iako zxz funkcija ne radi, je:

1234567890354
zxz0,00006397461129381550,0000363174649464781
nevsad0,00008045715276239210,0000508444509250694

zxz 27.10.2016 16:41
Predmet:Re: konvert broja u slovo

Hehe dodao sam proceduru koja nedostaje.
Kada sam prekopirao sa starog foruma izgleda poslije nikome nije ni trebala.
Trebala je samo za kase dok su se radile.

zxz 27.10.2016 17:21
Predmet:Re: konvert broja u slovo

Da napomenem moja procedura ne radi decimalne brojeve.
ja sam to radio drugacije.
Razdvojim broj na dva dijela cio i decimalni i 2 puta posalje proceduri tako da dobijem slovima i decimalni dio.