• Sábado 21 de Diciembre de 2024, 13:05

Autor Tema:  Re: rutina para pasar cifras a letras  (Leído 3732 veces)

TITO

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re: rutina para pasar cifras a letras
« en: Lunes 23 de Junio de 2003, 01:56 »
0
quisiera saber quien podria tener una rutina o y programa para pasar un monto (12.510,00) a monto escrito, doce mil quinientos diez (ejemplo),gracias mi correo es kit90@cantv.net (venezuela)

Plinio

  • Miembro activo
  • **
  • Mensajes: 39
    • Ver Perfil
    • http://www.dominicanfox.cjb.net
Re: rutina para pasar cifras a letras
« Respuesta #1 en: Lunes 23 de Junio de 2003, 15:12 »
0

Spawn

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
    • http://go.to/rpgsoft
rutina para pasar cifras a letras
« Respuesta #2 en: Sábado 28 de Junio de 2003, 20:23 »
0
Ponme tu direccion de e-mail o mientras tanto dejame ver si puedo postear la rutina aqui mismo

Saludos!

:D

geor

  • Miembro activo
  • **
  • Mensajes: 27
    • Ver Perfil
Re: rutina para pasar cifras a letras
« Respuesta #3 en: Sábado 29 de Mayo de 2004, 19:18 »
0
spaw: necesito la rutina de monto escrito

geor_2112@hotmail.com

hay miramos
La perseverancia es la constancia de lo que nos  
                          queda dificil por hacer

the_punch64

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: rutina para pasar cifras a letras
« Respuesta #4 en: Viernes 4 de Junio de 2004, 02:08 »
0
********Mira esta funcion NO LA HICE YO, solo la modifique un poco para que te retorne el string con un tipo de moneda, pruebala y haber como te funciona


******SALUDOS



***********************************************************************************************************************************************
* Descripción: Programa que convierte una expresión numérica a una expresion en letras
* Variables
* Nombre                Tipo      Descripción
* ------------               ------         -----------------
* tipoMoneda            caracter      Pone el tipo de Moneda
* ultimaposiciondecimal      numerica      Guarda la ultima posición decimal de la expresión ingresada en el programa.
* expresionnumerica         numerica      Contiene la expresión numerica a evaluar en el programa
* palabras               arreglo      Arreglo Unidimencional de 12 posiciones donde se guarda la palabra
*                               de un elemento de la expresion de acuerdo a   la posición que tenga el mismo
*                              dentro de la expresion.
* digitos                  arreglo       Arreglo Unidimencional de 12 posiciones donde se guarda la cantidad de digitos
*                              tiene la expresion a evaluar en el programa.
*uso:
*numerosaletras(25000,"Dolares")
***********************************************************************************************************************************************
   
procedure numerosaletras
   parameters expresionnumerica,tipoMoneda
   set decimals to 2
   dimension palabras(12)
   palabras(1)=space(12)
   palabras(2)=space(12)
   palabras(3)=space(12)
   palabras(4)=space(12)
   palabras(5)=space(12)
   palabras(6)=space(12)
   palabras(7)=space(12)
   palabras(8)=space(12)
   palabras(9)=space(12)
   palabras(10)=space(12)
   palabras(11)=space(12)
   palabras(12)=space(12)

   * este arreglo se usará para llenar el arreglo palabras
   dimension digitos(10)
   digitos(1)=""
   digitos(2)="Un "
   digitos(3)="Dos "
   digitos(4)="Tres "
   digitos(5)="Cuatro "
   digitos(6)="Cinco "
   digitos(7)="Seis "
   digitos(8)="Siete "
   digitos(9)="Ocho "
   digitos(10)="Nueve "

   * salta el proceso si el valor es menor que 1
   if expresionnumerica<1
      expresionnumerica=str(expresionnumerica,12,2)
      string='Cero '+TipoMoneda+' y '+substr(expresionnumerica,11,2)+'/100'
      return string
   endif
   expresionnumerica=RTRIM(str(expresionnumerica,12,2))   && convertir parametro numérico a caracter
   string=''
   xx=1
   do initstng
         * este ciclo es el corazon del programa
   do while .t.
      if xx>=10   && no convertimos números en el derecho del punto decimal por consiguiente salida cuando hacemos allí
         exit
      endif
      if palabras(xx)>' '
         do cientos
      endif
      xx=xx+1
      if palabras(xx)>' '
         if palabras(xx)='Un '   && chequea si es uno
            xx=xx+1               && en la posición de decenas
            do decenas      && entre el 10 y el 19
            do millon
            xx=xx+1
            loop
         else
            do unidades
            if palabras(xx+1)>' '
               string=string+'y '
            endif
         endif
      endif
      xx=xx+1
      if palabras(xx)>' '
         string=string+digitos(val(substr(expresionnumerica,xx,1))+1)
      endif
      do millon
      xx=xx+1
   enddo
   string=string+''+TipoMoneda+' con '+substr(expresionnumerica,11,2)+'/100'
   if ("un millones" $ string) .and. (at("Un Millones",string)=1)
      string="Un Millón"+substr(string,12,len(string)-12)
   endif
   return string

************************
*  final de num2word
************************
**********************
procedure millon
**********************
* agrega la palabra millón o millones en la variable string
   do case
      case xx=3
         if palabras(1)>' ' .or. palabras(2)>' ' .or. palabras(3)>' '
            string=string+'Millones '
         endif
      case xx=6
         if palabras(4)>' ' .or. palabras(5)>' ' .or. palabras(6)>' '
            string=string+'Mil '
         endif
   endcase


**********************
procedure cientos
**********************
* agrega la palabra cien o ciento en la variable string
   do case
      case palabras(xx)==''
         string=string+'Cien '
      case palabras(xx)='Un '
         if (palabras(xx+1)>' ' .or. palabras(xx+2)>' ')
            string=string+'Ciento '
         else
            string=string+'Cien '
         endif
      case palabras(xx)='Dos '
         string=string+'Doscientos '
      case palabras(xx)='Tres '
         string=string+'Trescientos '
      case palabras(xx)='Cuatro '
         string=string+'Cuatrocientos '
      case palabras(xx)='Cinco '
         string=string+'Quinientos '
      case palabras(xx)='Seis '
         string=string+'Seiscientos '
      case palabras(xx)='Siete '
         string=string+'Setecientos '
      case palabras(xx)='Ocho '
         string=string+'Ochocientos '
      case palabras(xx)='Nueve '
         string=string+'Novecientos '
   endcase
   return


**********************
procedure decenas
**********************
* agrega la palabra diez, once, doce, trece, catorce hasta diecinueve a la variable string
   do case
      case palabras(xx)==''
         string=string+'Diez '
      case palabras(xx)='Un '
         string=string+'Once '
      case palabras(xx)='Dos '
         string=string+'Doce '
      case palabras(xx)='Tres '
         string=string+'Trece '
      case palabras(xx)='Cuatro '
         string=string+'Catorce '
      case palabras(xx)='Cinco '
         string=string+'Quince '
      case palabras(xx)='Seis '
         string=string+'Dieciseis '
      case palabras(xx)='Siete '
         string=string+'Diecisiete '
      case palabras(xx)='Ocho '
         string=string+'Dieciocho '
      case palabras(xx)='Nueve '
         string=string+'Diecinueve '
   endcase
   return
   * final de decenas


**********************
procedure unidades
**********************
* agrega la palabra diez, veinte, treinta, cuarenta, cincuenta hasta noventa a la variable string
* la variable palabras(xx) = 'uno ' entonce sera 'diez'
* si palabras(xx) = 'dos ' entonce sera 'veinte'
* si palabras(xx) = 'tres '  entonces sera 'treinta'
   do case
      case palabras(xx)==''
         return
      case palabras(xx)='Un '
         string=string+'Diez '
      case palabras(xx)='Dos '
         string=string+'Veinte '
      case palabras(xx)='Tres '
         string=string+'Treinta '
      case palabras(xx)='Cuatro '
         string=string+'Cuarenta '
      case palabras(xx)='Cinco '
         string=string+'Cincuenta '
      case palabras(xx)='Seis '
         string=string+'Sesenta '
      case palabras(xx)='Siete '
         string=string+'Setenta '
      case palabras(xx)='Ocho '
         string=string+'Ochenta '
      case palabras(xx)='Nueve '
         string=string+'Noventa '
   endcase
   return
* final del procedure unidades


**********************
procedure initstng
**********************
*******************************************************************
* este loop crea el arreglo palabras in el cual
* los elementos son una representacion alpha
* de la cifra incluida el la variable expresionnumerica
* ejemplo: (pasando el valor = 12345.95)
*******************************************************************
* palabras(1) = " "
* palabras(2) = " "
* palabras(3) = " "
* palabras(4) = " "
* palabras(5) = "one "
* palabras(6) = "two "
* palabras(7) = "three "
* palabras(8) = "four "
* palabras(9) = "five "
* palabras(10) = "and"
* palabras(11) = "nine "
* palabras(12) = "five "
do while .t.
   if xx>12
      exit
   endif
   do case
      case substr(expresionnumerica,xx,1)='.'
         palabras(xx)='y'
      case substr(expresionnumerica,xx,1)=' '
         palabras(xx)=' '
      otherwise
         ultimaposiciondecimal=val(substr(expresionnumerica,xx,1))
         palabras(xx)=digitos(ultimaposiciondecimal+1)
   endcase
   xx=xx+1
enddo
xx=1
return