Centar za edukaciju-BiH


Stranice (2):1,2

#1 21.10.2016 09:16
nevsad Van mreze
Clan
Registrovan od:01.09.2010
Postovi:228


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
↑  ↓

#2 21.10.2016 09:32
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,612


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
Podrška samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#3 21.10.2016 09:32
nevsad Van mreze
Clan
Registrovan od:01.09.2010
Postovi:228


Predmet:Re: konvert broja u slovo
funkcija je dobra
nije valjoa format broja

pozdrav
↑  ↓

#4 26.10.2016 13:47
Avko Van mreze
Administrator
Registrovan od:28.05.2014
Postovi:4,707


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?
zivot je moja domovina.
↑  ↓

#5 26.10.2016 17:20
pmiroslav Van mreze
Clan
Registrovan od:02.02.2009
Postovi:1,458


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

Slicice prilozenih slika:
Image1.jpg
Tip datoteke:Informacije o tipu datoteke za:jpg jpg
Preuzimanja:257
Velicina datoteke:196.58 KB
Velicina slike: 1600 x 900 Pikseli


Pozdrav
Ovaj post je ureden 1 puta. Posljednja izmjena 26.10.2016 17:21 od strane pmiroslav. ↑  ↓

#6 26.10.2016 23:22
Avko Van mreze
Administrator
Registrovan od:28.05.2014
Postovi:4,707


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
zivot je moja domovina.
↑  ↓

#7 27.10.2016 00:21
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,612


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.
Podrška samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#8 27.10.2016 11:33
Avko Van mreze
Administrator
Registrovan od:28.05.2014
Postovi:4,707


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

zivot je moja domovina.
Ovaj post je ureden 2 puta. Posljednja izmjena 27.10.2016 11:34 od strane Avko. ↑  ↓

#9 27.10.2016 16:41
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,612


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.
Podrška samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#10 27.10.2016 17:21
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,612


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.
Podrška samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

Stranice (2):1,2


Sva vremena su GMT +02:00. Trenutno vrijeme: 11: 19 pm.