Search  
Wednesday, May 23, 2012 ..:: Forum ::.. Register  Login
 Forum Minimize
Pentru a putea posta mesaje trebuie să vă înregistraţi.
Notă: Mesajele cu conţinut jignitor sau ilegal (inclusiv cereri de soft piratat) nu sunt acceptate şi vor fi şterse imediat .

Pentru a primi raspunsuri rapide si corecte, scrieti in mesaj ce intentionati sa faceti, ce mesaj de eroare primiti, in ce context si in urma caror actiuni. De asemenea, mentionati versiunea de FoxPro in care lucrati!
Dacă nu specificați versiunea, se consideră VFP 9.0 SP2.

SearchForum Home
  Visual FoxPro  Visual FoxPro in general  CONVERSIE CIFRE...
 CONVERSIE CIFRE IN LITERE
 
 7/16/2011 11:26:10 PM
User is offlineSCHRECK
156 posts
5th


CONVERSIE CIFRE IN LITERE
 (N/A)
Poate are nevoie cineva de o functie care are ca argument un numar si intoarce numarul exprimat in litere (util CHITANTE FISCALE, CERERE RESTITUIRE CONCEDII MEDICALE)

Ex.pt. 12555.99 rezulta DOUASPREZECEMIICINCISUTECINCIZECISICINCILEINOUAZECISINOUABANI

Se va folosi functia LITERE care intoarce doar intregi.
Pt. a folosi zecimale se va recurge la un artificiu

Ex.
nr=12555.92

Apelul functiei LITERE

? LITERE(INT(nr))+'LEI'+IIF(MOD(nr,INT(nr))#0,LITERE(MOD(nr,INT(nr))*100)+'BANI','')

FUNCTION LITERE
parameter nrq1_

****************
strunit='UNU DOI TREI PATRUCINCISASE SAPTEOPT NOUA ZECE '
strord='UNA DOUA TREI PATRUCINCISASE SAPTEOPT NOUA '
strmii='UN DOUA TREI PATRUCINCISASE SAPTEOPT NOUA '
lit_=''
nrq_=int(nrq1_)
i=1000000000
do while i>1/1000
nr_=int(nrq_/i)
a1=int(nr_/100)
if a1>0
if a1>1
lit_=lit_+trim(substr(strord,(a1-1)*5+1,5))+'SUTE'
else
lit_=lit_+trim(substr(strord,(a1-1)*5+1,5))+'SUTA'
endif
endif
a2=int((nr_-a1*100)/10)
if a2>1
lit_=lit_+trim(substr(strord,(a2-1)*5+1,5))+'ZECI'
endif
a3=nr_-a1*100-a2*10
if a2=1
if a3=0
lit_=lit_+'ZECE'
else
lit_=lit_+trim(substr(strmii,(a3-1)*5+1,5))+'SPREZECE'
endif
else
if a2>1.and.a3>0
lit_=lit_+'SI'
endif
if a3>0
do case
case i=1000.and.a2=0.and.a1=0
lit_=lit_+trim(substr(strord,(a3-1)*5+1,5))
case i>1000.and.a2=0.and.a1=0
lit_=lit_+trim(substr(strmii,(a3-1)*5+1,5))
case i>=1000
lit_=lit_+trim(substr(strord,(a3-1)*5+1,5))
other
lit_=lit_+trim(substr(strunit,(a3-1)*5+1,5))
endcase
endif
endif
do case
case nr_=1
do case
case i=1000
lit_=lit_+'MIE'
case i=1000000
lit_=lit_+'MILION'
case i=1000000000
lit_=lit_+'MILIARD'
endcase
case nr_>1
do case
case i=1000
lit_=lit_+'MII'
case i=1000000
lit_=lit_+'MILIOANE'
case i=1000000000
lit_=lit_+'MILIARDE'
endcase
endcase
nrq_=nrq_-nr_*i
i=i/1000
enddo
lit_=lit_
return lit_


 7/17/2011 11:09:24 AM
User is offlineAndrew
19 posts


Re: CONVERSIE CIFRE IN LITERE
 (N/A)
pentru nr=12555.92 aplicatia respectiva a returnat urmatorul rezultat: UA TRSPREZECEMIIASE SSUTEINCISZECISINCISALEIUAZECISIOI TRBANI
 7/17/2011 12:09:42 PM
User is offlineSCHRECK
156 posts
5th


Descarca-l de peRe: CONVERSIE CIFRE IN LITERE
 (N/A)
Ai dreptate. Am introdus codul cu Copy Paste. Probabil ceva se distorsioneaza

Descarca-l de pe http://www28.zippyshare.com/v/59432816/file.html

Raspunde-mi daca merge sau nu

 7/17/2011 2:51:49 PM
User is offlineAndrew
19 posts


Re: Descarca-l de peRe: CONVERSIE CIFRE IN LITERE
 (N/A)
Aplicatia descarcata merge perfect. Mersi
 7/17/2011 6:34:36 PM
User is offlineAndrew
19 posts


Re: Descarca-l de peRe: CONVERSIE CIFRE IN LITERE
 (N/A) Modified By Andrew  on 7/17/2011 6:38:54 PM)
Dar totusi am observat o problema: incearca nr=999999999 si vezi rezultatul. Pana la acest numar este in regula !
  Visual FoxPro  Visual FoxPro in general  CONVERSIE CIFRE...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2010 Profox   Terms Of Use  Privacy Statement