Article View: chile.comp.programacion
Article #2278Re: Texto en factura
From: Mauricio Gómez
Date: Mon, 16 Jan 2006 20:05
Date: Mon, 16 Jan 2006 20:05
77 lines
4066 bytes
4066 bytes
cbd escribi�:
> Amigos, tengo que implementar en forma urgente un algoritmo para un programa
> en C++ que me transforme el valor total num�rico de la factura a texto, o
> sea por ejemplo si la factura es por $540.569 me ponga Quinientos cuarenta
> mil quinientos sesenta y nueve.
> Alguien por ah� sabe del algoritmo en cuesti�n?
>
> Gracias desde ya
>
Esta en VB pero no debiera ser drama pasarlo a C++:
Public Function Num2Text(value As Double) As String
Select Case value
Case 0: Num2Text = "CERO"
Case 1: Num2Text = "UN"
Case 2: Num2Text = "DOS"
Case 3: Num2Text = "TRES"
Case 4: Num2Text = "CUATRO"
Case 5: Num2Text = "CINCO"
Case 6: Num2Text = "SEIS"
Case 7: Num2Text = "SIETE"
Case 8: Num2Text = "OCHO"
Case 9: Num2Text = "NUEVE"
Case 10: Num2Text = "DIEZ"
Case 11: Num2Text = "ONCE"
Case 12: Num2Text = "DOCE"
Case 13: Num2Text = "TRECE"
Case 14: Num2Text = "CATORCE"
Case 15: Num2Text = "QUINCE"
Case Is < 20: Num2Text = "DIECI" & Num2Text(value - 10)
Case 20: Num2Text = "VEINTE"
Case Is < 30: Num2Text = "VEINTI" & Num2Text(value - 20)
Case 30: Num2Text = "TREINTA"
Case 40: Num2Text = "CUARENTA"
Case 50: Num2Text = "CINCUENTA"
Case 60: Num2Text = "SESENTA"
Case 70: Num2Text = "SETENTA"
Case 80: Num2Text = "OCHENTA"
Case 90: Num2Text = "NOVENTA"
Case Is < 100: Num2Text = Num2Text(Int(value \ 10) * 10) & " Y " &
Num2Text(value Mod 10)
Case 100: Num2Text = "CIEN"
Case Is < 200: Num2Text = "CIENTO " & Num2Text(value - 100)
Case 200, 300, 400, 600, 800: Num2Text = Num2Text(Int(value \ 100)) &
"CIENTOS"
Case 500: Num2Text = "QUINIENTOS"
Case 700: Num2Text = "SETECIENTOS"
Case 900: Num2Text = "NOVECIENTOS"
Case Is < 1000: Num2Text = Num2Text(Int(value \ 100) * 100) & " " &
Num2Text(value Mod 100)
Case 1000: Num2Text = "MIL"
Case Is < 2000: Num2Text = "MIL " & Num2Text(value Mod 1000)
Case Is < 1000000: Num2Text = Num2Text(Int(value \ 1000)) & " MIL"
If value Mod 1000 Then Num2Text = Num2Text & " " &
Num2Text(value Mod 1000)
Case 1000000: Num2Text = "UN MILLON"
Case Is < 2000000: Num2Text = "UN MILLON " & Num2Text(value Mod
1000000)
Case Is < 1000000000000#: Num2Text = Num2Text(Int(value / 1000000)) & "
MILLONES"
If (value - Int(value / 1000000) * 1000000)
Then Num2Text = Num2Text & " " & Num2Text(value - Int(value / 1000000) *
1000000)
Case 1000000000000#: Num2Text = "UN BILLON"
Case Is < 2000000000000#: Num2Text = "UN BILLON " & Num2Text(value -
Int(value / 1000000000000#) * 1000000000000#)
Case Else:
Num2Text = Num2Text(Int(value / 1000000000000#)) & " BILLONES"
If (value - Int(value / 1000000000000#) * 1000000000000#) Then
Num2Text = Num2Text & " " & Num2Text(value - Int(value / 1000000000000#) *
1000000000000#)
End Select
End Function
rro
Technical Details
Message-ID:
<dqgqgh$bov$1@news.nivel5.cl>Path:
arc1-ca.pugleaf.net!g2news1.google.com!news2.google.com!news3.google.com!news.glorb.com!news.kjsl.com!news.nivel5.cl!not-for-mailReferences:
<dqgjs7$a7a$1@news.nivel5.cl>Show Full Headers
Complete Article Headers
X-Google-Thread: 1593cb,2f3a609e66c4b540 X-Google-Attributes: gid1593cb,public X-Google-Language: SPANISH,ASCII Path: arc1-ca.pugleaf.net!g2news1.google.com!news2.google.com!news3.google.com!news.glorb.com!news.kjsl.com!news.nivel5.cl!not-for-mail From: Mauricio Gómez <pregunte@sileinteresa.com> Newsgroups: chile.comp.programacion Subject: Re: Texto en factura Date: Mon, 16 Jan 2006 16:05:14 -0400 Organization: Varios Lines: 77 Message-ID: <dqgqgh$bov$1@news.nivel5.cl> References: <dqgjs7$a7a$1@news.nivel5.cl> NNTP-Posting-Host: pc-23-73-104-200.cm.vtr.net Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit X-Trace: news.nivel5.cl 1137438033 12063 200.104.73.23 (16 Jan 2006 19:00:33 GMT) X-Complaints-To: news@news.nivel5.cl NNTP-Posting-Date: Mon, 16 Jan 2006 19:00:33 +0000 (UTC) User-Agent: Mozilla Thunderbird 1.0.2 (Windows/20050317) X-Accept-Language: es-es, es In-Reply-To: <dqgjs7$a7a$1@news.nivel5.cl>