[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