[Previo por Fecha] [Siguiente por Fecha] [Previo por Hilo] [Siguiente por Hilo]
[Hilos de Discusión] [Fecha] [Tema] [Autor]Hola Lo he hecho en Basic (titipuchal de variantes incluidas VB), pascal, c, natural , cobol (argh olvidemos malos tiempos), pero me doy cuenta que nunca lo hice para perll, por lo que estaras obligado (moralmente) a enviarnos la copia. Te anexo una funcion escrita en pascal, por que aunque es la mas larga que he hecho es la mas facil de entender (creo), y aunque se le puede reducir codigo, al menos a mi me parece facil de seguir Saludos J. Miguel ---corte aqui--- Function Cnv.Numero_a_letra(numero:double):string; const lonmax=12; var unidad,decena,centena:char; numerocad,paso,Resulta:string; lon,numerito,numeromiles,numeromillones:int64; begin Resulta:=''; numerocad:='000000000000'+floattostr(int(numero)); lon:=length(numerocad); numerocad:=copy(numerocad,lon-lonmax+1,lonmax); if numero<1000 then begin numerito:=strtoint(copy(numerocad,lonmax-2,3)); unidad:=numerocad[lonmax]; decena:=numerocad[lonmax-1]; centena:=numerocad[lonmax-2]; if numerito=0 then begin Result:='cero'; exit; end else begin // numerito no cero if (decena<>'1') or (unidad>'5') then case unidad of '1': Resulta:=trim(Resulta+'UN'); '2': Resulta:=trim(Resulta+'DOS'); '3': Resulta:=trim(Resulta+'TRES'); '4': Resulta:=trim(Resulta+'CUATRO'); '5': Resulta:=trim(Resulta+'CINCO'); '6': Resulta:=trim(Resulta+'SEIS'); '7': Resulta:=trim(Resulta+'SIETE'); '8': Resulta:=trim(Resulta+'OCHO'); '9': Resulta:=trim(Resulta+'NUEVE'); end; case decena of '1': case unidad of '0': Resulta:='DIEZ'; '1': Resulta:='ONCE'; '2': Resulta:='DOCE'; '3': Resulta:='TRECE'; '4': Resulta:='CATORCE'; '5': Resulta:='QUINCE'; else Resulta:='DIECI'+Resulta; end; '2': if unidad='0' then Resulta:='VEINTE' else Resulta:='VEINTI'+Resulta; '3': if unidad='0' then Resulta:='TREINTA' else Resulta:='TREINTA Y '+Resulta; '4': if unidad='0' then Resulta:='CUARENTA' else Resulta:='CUARENTA Y '+Resulta; '5': if unidad='0' then Resulta:='CINCUENTA' else Resulta:='CINCUENTA Y '+Resulta; '6': if unidad='0' then Resulta:='SESENTA' else Resulta:='SESENTA Y '+Resulta; '7': if unidad='0' then Resulta:='SETENTA' else Resulta:='SETENTA Y '+Resulta; '8': if unidad='0' then Resulta:='OCHENTA' else Resulta:='OCHENTA Y '+Resulta; '9': if unidad='0' then Resulta:='NOVENTA' else Resulta:='NOVENTA Y '+Resulta; end; case centena of '1': if (unidad='0') and (decena='0') then Resulta:='CIEN' else Resulta:='CIENTO '+Resulta; '2': Resulta:=trim('DOSCIENTOS '+Resulta); '3': Resulta:=trim('TRESCIENTOS '+Resulta); '4': Resulta:=trim('CUATROCIENTOS '+Resulta); '5': Resulta:=trim('QUINIENTOS '+Resulta); '6': Resulta:=trim('SEISCIENTOS '+Resulta); '7': Resulta:=trim('SETECIENTOS '+Resulta); '8': Resulta:=trim('OCHOCIENTOS '+Resulta); '9': Resulta:=trim('NOVECIENTOS '+Resulta); end; Result:=Resulta; end // numerito no cero (y numero <1000) end else begin // numero>=1000 numerito:=strtoint(copy(numerocad,lonmax-2,3)); if numerito <>0 then Resulta:=trim(Numero_a_letra(numerito)+' '+Resulta); paso:=copy(numerocad,lonmax-5,3); numeromiles:=strtoint(paso); if numeromiles <> 0 then Resulta:=trim(Numero_a_letra(numeromiles)+' MIL'+' '+Resulta); paso:=copy(numerocad,lonmax-11,6); numeromillones:=strtoint(paso); if numeromillones<>0 then Resulta:=trim(Numero_a_letra(numeromillones)+' MILLONES'+' '+Resulta); Result:=Resulta; end //x>=1000 end; ---corte aqui --- Manuel Leos Rivas wrote: > Alguien ha hecho de casualidad alguna rutina o > programa para convertir un numero cualquiera a su > equivalente en letras > ej.: > 67123 -> sesenta y siete mil ciento veintitres > > En PERL, vbscript, VB o VBA? > > Se aceptan sugerencias > > ===== > ________________________ > Sinergia Deportiva > Manuel Leos Rivas > Tel.: +52 (8)376-0524/28 > Ext.: 227 > Mail: mleos en uanl mx > > _________________________________________________________ > Do You Yahoo!? > Obtenga su dirección de correo-e gratis @yahoo.com > en http://correo.espanol.yahoo.com > > -- > Para desuscribirse, mande correo a: ayuda-unsubscribe en linux org mx > Para comandos adicionales, envíelo a: ayuda-help en linux org mx -- Para desuscribirse, mande correo a: ayuda-unsubscribe en linux org mx Para comandos adicionales, envíelo a: ayuda-help en linux org mx