 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Mar 11 Mar, 2008 11:26 am Asunto: Escribir un número en letra |
|
|
He estado buscando por el foro y tal vez no haya sabido hacerlo. Juraría que en algún sitio vi una rutina para escribir las cifras en letra, es decir que si yo tengo él número 1200, el programa escriba MIL DOSCIENTOS. _________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA) |
|
| Volver arriba |
|
 |
bosoft Master

Registrado: 23 Oct 2005Mensajes: 342
|
Publicado: Mar 11 Mar, 2008 1:48 pm Asunto: Re: Escribir un número en letra |
|
|
| Angel escribió: | | He estado buscando por el foro y tal vez no haya sabido hacerlo. Juraría que en algún sitio vi una rutina para escribir las cifras en letra, es decir que si yo tengo él número 1200, el programa escriba MIL DOSCIENTOS. |
Hay que buscar mas, que después nos quejamos
https://cppbuilder.es/viewtopic.php?t=7420
Saludos, Bosoft. |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
|
| Volver arriba |
|
 |
ZHAX1 Master

Registrado: 09 Mar 2007Mensajes: 191
|
Publicado: Mie 12 Mar, 2008 3:57 pm Asunto: |
|
|
| hay que buscar mas si, pero este post me ofrece al oportunidad de no tenerlo que buscar yo en el futuro, ¡¡¡¡pa la saca!!!! |
|
| Volver arriba |
|
 |
alfredo Master

Registrado: 13 Oct 2003Mensajes: 246Ubicación: Valencia Venezuela
|
Publicado: Sab 15 Mar, 2008 1:30 pm Asunto: |
|
|
Hola, hace tiempo hice esta funcion para pasar de numeros a letras,
evalua hasta Quintillones y decimales, se le pasa un double y devuelve
una cadena ansi.
Se ha tratado que el resultado se aproxime lo mas posible a la conversion humana.
Para los miles de millones usamos la expresion Millardo, los de Billones Billardo y asi...
Esta funcion se la hice al tio Bill, el resto de los mortales no manejamos tanto dinero
| Código: | AnsiString TfUtil::aLetras(double Numero)
{
// Los numeros los leemos en bloques de a tres y siempre se
// leen igual, segun la posicion del bloque le añadimos o
// no Subfijos como Mil, Millon(es).........etc.
//
//_________Formateamos a conveniencia
String NumberFormat=",##0.00;-,##0.00";
String Cadena=FormatFloat(NumberFormat,Numero);
//__________Eliminar puntos si los hubiera
for(int i=1;i<=Cadena.Length();i++)
if(Cadena.SubString(i,1)==".")
Cadena.Delete(i,1);
//__________Separar Bloques
String Decimal; // para separar decimales
int ComaPos=0; // para guardar posicion de la coma
bool Coma;
for(int i=1;i<Cadena>0)
Bloques+=1;
AnsiString aEvaluar, Resultado;
int Cuenta=0;
for(int j=1;j<=ComaPos;j++)
{
if(Cuenta==3)
{
Resultado+=EvaluarBloque(aEvaluar);
String Tmp=EvaluarBloque(aEvaluar);
switch (Bloques)
{
case 2 : if(Tmp!="")
{
if(Tmp.SubString(Tmp.Length()-2,3)=="Uno")
Resultado.Delete(Resultado.Length(),1);
Resultado+=" Mil ";
}
break;
case 3 : if(Tmp!="")
{
if(EvaluarBloque(aEvaluar)=="Un")
Resultado+=" Millon ";
else
Resultado+=" Millones ";
}
break;
case 4 : if(Tmp!="")
{
if(EvaluarBloque(aEvaluar)=="Un")
Resultado+=" Millardo ";
else
Resultado+=" Millardos ";
}
break;
case 5 : if(Tmp!="")
{
if(EvaluarBloque(aEvaluar)=="Un")
Resultado+=" Billon ";
else
Resultado+=" Billones ";
break;
}
case 6 : if(Tmp!="")
{
if(EvaluarBloque(aEvaluar)=="Un")
Resultado+=" Billardo ";
else
Resultado+=" Billardos ";
}
break;
case 7 : if(Tmp!="")
{
if(EvaluarBloque(aEvaluar)=="Un")
Resultado+=" Trillon ";
else
Resultado+=" Trillones ";
}
break;
case 8 : if(Tmp!="")
{
if(EvaluarBloque(aEvaluar)=="Un")
Resultado+=" Trillardo ";
else
Resultado+=" Trillardos ";
}
break;
case 9 : if(Tmp!="")
{
if(EvaluarBloque(aEvaluar)=="Un")
Resultado+=" Cuatrillon ";
else
Resultado+=" Cuatrillones ";
}
break;
case 10 :if(Tmp!="")
{
if(EvaluarBloque(aEvaluar)=="Un")
Resultado+=" Cuatrillardo ";
else
Resultado+=" Cuatrillardos ";
}
break;
case 11 : if(Tmp!="")
{
if(EvaluarBloque(aEvaluar)=="Un")
Resultado+=" Quintillon ";
else
Resultado+=" Quintillones ";
}
break;
}
Bloques--;
Cuenta=0;
aEvaluar="";
}
aEvaluar+=Cadena.SubString(j,1);
Cuenta++;
}
if(EvaluarBloque(Decimal)=="")
Decimal="0";
else
Decimal=EvaluarBloque(Decimal);
return LowerCase(Resultado+" Con "+Decimal+"/100");//EvaluarBloque(Cadena);
}
//----------------------------------------------------------------------------
AnsiString TfUtil::EvaluarBloque(AnsiString Bloque)
{
//Evaluacion de bloque de tres digitos
AnsiString Resultado;
//___seccion centenas________//
if(Bloque.SubString(1,1)=="1")
Resultado+="Cien";
if(Bloque.SubString(1,1)=="2")
Resultado+="Doscientos ";
if(Bloque.SubString(1,1)=="3")
Resultado+="Trescientos ";
if(Bloque.SubString(1,1)=="4")
Resultado+="Cuatrocientos ";
if(Bloque.SubString(1,1)=="5")
Resultado+="Quinientos ";
if(Bloque.SubString(1,1)=="6")
Resultado+="Seiscientos ";
if(Bloque.SubString(1,1)=="7")
Resultado+="Setecientos ";
if(Bloque.SubString(1,1)=="8")
Resultado+="Ochocientos ";
if(Bloque.SubString(1,1)=="9")
Resultado+="Novecientos ";
if(Resultado=="Cien") //anomalia de la centena unica
if(Bloque.SubString(2,2)=="00")
Resultado+=" ";
else
Resultado+="to ";
//___seccion decenas unidades________//
if(Bloque.SubString(2,1)=="1")//anomalia de la unidad de decena
{
if(Bloque.SubString(2,2)=="10")
Resultado+="Diez";
if(Bloque.SubString(2,2)=="11")
Resultado+="Once";
if(Bloque.SubString(2,2)=="12")
Resultado+="Doce";
if(Bloque.SubString(2,2)=="13")
Resultado+="Trece";
if(Bloque.SubString(2,2)=="14")
Resultado+="Catorce";
if(Bloque.SubString(2,2)=="15")
Resultado+="Quince";
if(Bloque.SubString(2,2)=="16")
Resultado+="Dieciseis";
if(Bloque.SubString(2,2)=="17")
Resultado+="Diecisiete";
if(Bloque.SubString(2,2)=="18")
Resultado+="Dieciocho";
if(Bloque.SubString(2,2)=="19")
Resultado+="Diecinueve";
}
if(Bloque.SubString(2,1)=="2")
if(Bloque.SubString(3,1)=="0")
Resultado+="Veinte";
else
Resultado+="Veinti";
if(Bloque.SubString(2,1)=="3")
if(Bloque.SubString(3,1)=="0")
Resultado+="Treinta";
else
Resultado+="Treinta y ";
if(Bloque.SubString(2,1)=="4")
if(Bloque.SubString(3,1)=="0")
Resultado+="Cuarenta";
else
Resultado+="Cuarenta y ";
if(Bloque.SubString(2,1)=="5")
if(Bloque.SubString(3,1)=="0")
Resultado+="Cincuenta";
else
Resultado+="Cincuenta y ";
if(Bloque.SubString(2,1)=="6")
if(Bloque.SubString(3,1)=="0")
Resultado+="Sesenta";
else
Resultado+="Sesenta y ";
if(Bloque.SubString(2,1)=="7")
if(Bloque.SubString(3,1)=="0")
Resultado+="Setenta";
else
Resultado+="Setenta y ";
if(Bloque.SubString(2,1)=="8")
if(Bloque.SubString(3,1)=="0")
Resultado+="Ochenta";
else
Resultado+="Ochenta y ";
if(Bloque.SubString(2,1)=="9")
if(Bloque.SubString(3,1)=="0")
Resultado+="Noventa";
else
Resultado+="Noventa y ";
//___________unidades______________
if(Bloque.SubString(2,1)!="1")
{
if(Bloque.SubString(3,1)=="1")
if(Bloque.SubString(1,2)=="00")
Resultado="Un";//Otra anomalia
else
Resultado+="un";
if(Bloque.SubString(3,1)=="2")
Resultado+="dos";
if(Bloque.SubString(3,1)=="3")
Resultado+="tres";
if(Bloque.SubString(3,1)=="4")
Resultado+="cuatro";
if(Bloque.SubString(3,1)=="5")
Resultado+="cinco";
if(Bloque.SubString(3,1)=="6")
Resultado+="seis";
if(Bloque.SubString(3,1)=="7")
Resultado+="siete";
if(Bloque.SubString(3,1)=="8")
Resultado+="ocho";
if(Bloque.SubString(3,1)=="9")
Resultado+="nueve";
}
return Resultado;
}
//---------------------------------------------------------------------------- |
|
|
| Volver arriba |
|
 |
|
|
No puedes publicar temas nuevos en este foro No puedes responder a temas en este foro No puedes editar tus mensajes en este foro No puedes borrar tus mensajes en este foro No puedes votar en las encuestas de este foro
|
© 2002–2026 Club Builder · Funciona con phpBB.
|