• Lunes 18 de Noviembre de 2024, 11:34

Autor Tema:  Números A Letras  (Leído 2185 veces)

mavicandia

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Números A Letras
« en: Martes 17 de Enero de 2006, 00:51 »
0
:unsure: He buscado funciones que conviertan números a letras pero no funcionan, alguien me puede ayudar?

grcornejoa

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Re: Números A Letras
« Respuesta #1 en: Martes 30 de Mayo de 2006, 04:35 »
0
alli te va una funcion, espero te sirva saludos.

/*Esta funcion convierte numeros a letras*/

/*args: pass by value type decimal name:nnumero
           pass by value type string  name:cgenero*/


Decimal   nNumero1, nNumero2, cdec
Long      a, nGrupo
String      aGrupos[5], aUnidad[10], aDecena[10,10], aCentena[10]
String      aConector[5], cEnLetra, cNumStr, cUnidad, cDecena,  cCentena, vLetras
String      Y, F, M, MIL, MILLON, MILLONES, BILLON, BILLONES

Y = 'y ';F = 'as ';M = 'os ';MIL = 'mil ';MILLON = 'millón '
MILLONES = 'millones ';BILLON = 'billón ';BILLONES = 'billones '
if ISNull(nnumero) then
   Return '**Error**'
end if   

IF IsNull(cGenero) THEN
   cGenero = 'F'
ELSE
   cGenero = UPPER(cGenero)
END IF

nNumero2 = Round( nNumero, 2)
nNumero1 = Truncate( nNumero, 0)
cdec = nNumero2 - nNumero1
cdec = Round( cdec * 100, 2)
a = cdec

// conversión a caracter del número, justificado con cero a la izquierda

cNumStr = String( nNumero1)
cNumStr = Fill( '0', 15 - Len( cNumStr)) + cNumStr

// confección de grupos
FOR nGrupo = 1 to 5
      aGrupos[ 5 - nGrupo + 1 ] = Mid(cNumStr, ((nGrupo -1)*3 +1), 3)
NEXT

//Proceso
cEnLetra=''
FOR nGrupo = 5 TO 1 STEP -1
   cUnidad=Right(aGrupos[nGrupo],1)
   cDecena=Mid(aGrupos[nGrupo],2,1)
   cCentena=Left(aGrupos[nGrupo],1)

// asignación para las unidades
IF nNumero1=0 AND nGrupo=1 THEN
   aUnidad[1]='cero'
ELSE
   aUnidad[1]=''
END IF

IF cDecena='1'  THEN
   aUnidad[2]=aDecena[2,integer(cUnidad)+1]
ELSEIF(nGrupo = 2 OR nGrupo = 4) AND aGrupos[nGrupo] = '001' THEN
   aUnidad[2]=''
ELSEIF (nGrupo > 2)  THEN
   aUnidad[2]='un '
ELSEIF (cGenero = 'F')  THEN
   aUnidad[2]='una '
ELSE
   aUnidad[2]='uno '
END IF

IF cDecena='1' THEN
   aUnidad[3]=aDecena[2,integer(cUnidad)+1]
ELSE
   aUnidad[3]='dos '
END IF

IF cDecena='1' THEN
   aUnidad[4]=aDecena[2,integer(cUnidad)+1]
ELSE
   aUnidad[4]='tres '
END IF

IF cDecena='1' THEN
   aUnidad[5]=aDecena[2,integer(cUnidad)+1]
ELSE
   aUnidad[5]='cuatro '
END IF

IF cDecena='1' THEN
   aUnidad[6]=aDecena[2,integer(cUnidad)+1]
ELSE
   aUnidad[6]='cinco '
END IF

IF cDecena='1' THEN
   aUnidad[7]=aDecena[2,integer(cUnidad)+1]
ELSE
   aUnidad[7]='seis '
END IF

IF cDecena='1' THEN
   aUnidad[8]=aDecena[2,integer(cUnidad)+1]
ELSE
   aUnidad[8]='siete '
END IF

IF cDecena='1' THEN
   aUnidad[9]=aDecena[2,integer(cUnidad)+1]
ELSE
   aUnidad[9]='ocho '
END IF

IF cDecena='1' THEN
   aUnidad[10]=aDecena[2,integer(cUnidad)+1]
ELSE
   aUnidad[10]='nueve '
END IF


// asignación para las decenas
aDecena[1,1]=''

IF cUnidad='0' THEN
   aDecena[2,1]='diez '
ELSE
   aDecena[2,1]=''
END IF
aDecena[2,2]='once '
aDecena[2,3]='doce '
aDecena[2,4]='trece '
aDecena[2,5]='catorce '
aDecena[2,6]='quince '
aDecena[2,7]='dieciseis '
aDecena[2,8]='diecisiete '
aDecena[2,9]='dieciocho '
aDecena[2,10]='diecinueve '
IF cUnidad='0' THEN
   aDecena[3,1]='veinte '
ELSE
   aDecena[3,1]='veinti '
END IF
IF cUnidad <> '0' THEN
   aDecena[4,1]  = 'treinta '+Y
ELSE
   aDecena[4,1]  = 'treinta '+''
END IF

IF cUnidad <> '0' THEN
    aDecena[5,1]  = 'cuarenta '+Y
ELSE
   aDecena[5,1]  = 'cuarenta '+''
END IF

IF cUnidad <> '0' THEN
   aDecena[6,1]  = 'cincuenta '+Y
ELSE
   aDecena[6,1]  = 'cincuenta '+''
END IF

IF cUnidad <> '0' THEN
   aDecena[7,1]  = 'sesenta '+Y
ELSE
   aDecena[7,1]  = 'sesenta '+''
END IF

IF cUnidad<>'0' THEN
   aDecena[8,1]  = 'setenta '+Y
ELSE
   aDecena[8,1]  = 'setenta '+''
END IF

IF cUnidad<>'0' THEN
   aDecena[9,1]  = 'ochenta '+Y
ELSE
   aDecena[9,1]  = 'ochenta '+''
END IF

IF cUnidad<>'0' THEN
   aDecena[10,1]  = 'noventa '+Y
ELSE
   aDecena[10,1]  = 'noventa '+''
END IF



// Asignación para las centenas
aCentena[1]=''

IF cDecena+cUnidad = '00' THEN
   aCentena[2]='cien '
ELSE
   aCentena[2]='ciento '
END IF

IF nGrupo<3 AND cGenero='F' THEN
   aCentena[3]='doscient'+F
ELSE
   aCentena[3]='doscient'+M
END IF
IF nGrupo<3 AND cGenero='F' THEN
   aCentena[4]='trescient'+F
ELSE
   aCentena[4]='trescient'+M
END IF
IF nGrupo<3 AND cGenero='F' THEN
   aCentena[5]='cuatrocient'+F
ELSE
   aCentena[5]='cuatrocient'+M
END IF
IF nGrupo<3 AND cGenero='F' THEN
   aCentena[6]='quinient'+F
ELSE
   aCentena[6]='quinient'+M
END IF
IF nGrupo<3 AND cGenero='F' THEN
   aCentena[7]='seiscient'+F
ELSE
   aCentena[7]='seiscient'+M
END IF
IF nGrupo<3 AND cGenero='F' THEN
   aCentena[8]='setecient'+F
ELSE
   aCentena[8]='setecient'+M
END IF
IF nGrupo<3 AND cGenero='F' THEN
   aCentena[9]='ochocient'+F
ELSE
   aCentena[9]='ochocient'+M
END IF
IF nGrupo<3 AND cGenero='F' THEN
   aCentena[10]='novecient'+F
ELSE
   aCentena[10]='novecient'+M
END IF


// Asignación para los conectores
aConector[1]=''
IF aGrupos[2]>'000' THEN
   aConector[2]=MIL
ELSE
   aConector[2]=''
END IF

IF aGrupos[3]>'000' OR aGrupos[4]>'000' THEN
   IF aGrupos[3]='001'THEN
      aConector[3]=MILLON
   ELSE
      aConector[3]=MILLONES
   END IF
ELSE
   aConector[3]=''
END IF


IF aGrupos[4]>'000' THEN
   aConector[4]=MIL
ELSE
   aConector[4]=''
END IF

IF aGrupos[5]>'000' THEN
   IF aGrupos[5]='001' THEN
      aConector[5]=BILLON
   ELSE
      aConector[5]=BILLONES
   END IF
ELSE
   aConector[5]=' '
END IF

// Completar la cifra en letras del grupo en curso
cEnLetra=cEnLetra+(aCentena[integer(cCentena)+1]+aDecena[integer(cDecena)+1,1]+aUnidad[integer(cUnidad)+1]+aConector[nGrupo])

NEXT
string cdec1
cdec1=String(a)
vLetras='***'+cEnLetra + '***'//+'y '+ cdec1+'/100 nuevos soles'
RETURN vLetras

pierpiter

  • Miembro activo
  • **
  • Mensajes: 58
    • Ver Perfil
Re: Números A Letras
« Respuesta #2 en: Martes 30 de Mayo de 2006, 15:32 »
0
Acá te dejo unos enlaces a ejemplos en código fuente para que mires también (son de la web del programador):

Código: Text
  1. http://lawebdelprogramador.com/codigo/enlace.php?idp=434&id=73&texto=Power+Builder
  2.  

Código: Text
  1. http://lawebdelprogramador.com/codigo/enlace.php?idp=425&id=73&texto=Power+Builder
  2.  

Saludos.