Programación Yiyiyuan
Utilice el sistema. recolectar. Genérico;
Uso del sistema. Linq
Usa el sistema. Texto;
Usa el sistema. hilo. Tarea;
Aplicación de consola de espacio de nombres1
{
Imprimir categoría
{
Constante int ZS = 0; /p>
const int XS = 1;
Public static void Main(string[] args)
{?
Imprimir Imprimir = nuevo Imprimir ();
String strWord
while(true)
{
string strNum = consola. ReadLine();
strWord = imprimir. imprimir palabra(strNum);
Consola. WriteLine(strWord);
}
}
///& lt;Resumen>
///Imprimir p>
///& lt;/summary & gt;
///& lt;nombre del parámetro = " num " & gt& lt/param & gt;
// /& lt; devuelve & gt& lt/returns & gt;
Cadena privada PrintWord (número de cadena)
{
Xian Zhengshu
Cadena de cadena Xiao Shu;
Carácter de cadena;
Cadena de palabra pequeña;
Cambiar (número dividido ('. ').longitud)
{
Caso 0:
Devuelve "Error desconocido";
Caso 1:
Tío Zheng = num. Split('.')[0];
Xiao Shu = " ";
Break;
Caso 2:
Tío Zheng = núm. Split('.')[0];
Xiao Shu = número. Split('.')[1];
Break;
Valor predeterminado:
Devuelve "El formato del número ingresado es incorrecto";
}
Palabra Zheng = PrintZS(Zheng Shu);
xiaoWord = PrintXS(Xiao Shu);
return (zhengWord== " " ? "Cero": caracteres normales) + "redondo" + caracteres pequeños + "completo"
}
///<Resumen>
/ // Imprimir la parte entera
///& lt;/summary & gt;
///& lt; param name = " zs " & gt& lt/param & gt; /p>
///& lt; devuelve & gt& lt/returns & gt;
Cadena privada PrintZS (Cadena ZS)
{
//El máximo es cientos de miles de millones.
if (zs.length>12)
devuelve "parte entera demasiado larga";
list<string>str=new list<chars String>();
StringBuilder strbZS = new StringBuilder();
if (zs. length>= 4)
{
Hacer
{
Estrecho. complemento(zs. substring(zs. longitud - 4, 4));
zs = zs. subcadena(0,zs.
longitud-4);
}mientras (zs.length>4);
}
if (zs.length!=0)
{
Estrecho. add(zs);
}
int contar todos = 0;
for(int i= str. count-1; i>=0; i- )
{
int print count = 0
for(int j = 0; j & ltstr[i]. length; j++)
{ ?
if(str[i][j]!='0')
{
strbZS. append(print num(str[I][j]);
strbZS.Append(PrintChildUnit(str[i]).Length-j,ZS));
imprimir recuento++ ;
}
Otro
{
if (i== recuento de cadenas - 1)
{
if (j! = 0)
{
int recuento = 0;
for(int k = 0; k & ltj;k++)
{
if (str[i][k] == '0 ')
{
count++;
}
}
if (count!= j & amp& ampj!= str[i]. Longitud-1 &&str[ i] [j + 1]! = '0')
{
strbZS. append(imprimir número(cadena[I][j]);
imprimir recuento++;
}
}
}else
{
if (countAll!= 0 & amp& ampj!= str[i]. Longitud-1 & amp;& ampstr[i][j + 1]!= '0 ')
{
strbZS. append(print num(str[I][j]);
imprimir recuento++;
}
} ?
}
}
if (printCount!= 0)
{ p>
strbZS.append(unidad de impresión(I+1));
contar todo++;
}
}
Return strbZS.ToString();
}
///<Summary>
///Imprimir la parte decimal
///</summary>
///<param name = "xs"></param>
/// & lt;returns & gt& lt/returns & gt;
Cadena privada PrintXS (String XS)
{
//La representación mínima es mili
If (xs.length>4 )
Devuelve "Parte fraccionaria demasiado larga";
StringBuilder str bxs = new StringBuilder();
for(int I = 0; i & ltxs. longitud; i++)
{
strbXS.
append(imprimir num(xs[I]);
strbXS.append(imprimir unidad secundaria(I+1,XS));
}
Regresar strbXS.
ToString();
}
///& lt;Resumen>
///Imprimir números
/// < /summary >
///<param name = " charNum " ></param>
///<returns & gt& lt/returns & gt;
Cadena privada PrintNum(char charNum)
{
Cambiar (char)
{
Caso "0": devolver "cero";?
Caso '1': devuelve "uno";
Caso '2': devuelve "er"
Caso "3": devuelve "tres"; ;
Caso "4": devuelve "si";
Ejemplo 5: devuelve "Wu"
Caso '6': devuelve "tierra";
Caso '7': devuelve "qi";
Caso '8': devuelve "ocho"
Caso '9': devuelve "nueve"; ;
Valor predeterminado: devolver "";
}
}
///<Resumen>
///Imprimir subunidad
///& lt;/summary & gt;
///& lt; nombre del parámetro = " recuento " & gt& lt /param>
///<param name = "categoría"></param>
///<returns & gt</ returns & gt;
Cadena privada unidad principal(int count, int categoría)
{
//Parte entera
If (Categoría == ZS)
{
Cambiar(cuenta)
{
Caso 1: Devuelve "";
Caso 2: Devuelve "Diez"
Caso 3: Devuelve "Cien";
Caso 4: Devuelve "Mil"
Valor predeterminado: Devuelve ""; /p>
}
//Parte decimal
Otros
{ p>
Cambiar (recuento)
{
Caso 4: Devuelve "milli";
Caso 3: Devuelve "Li";
Caso 2: Devuelve "minuto" ; p>
Caso 1: Devuelve "ángulo";
Valor predeterminado: devuelve "";
}
}
}
///<Resumen>
///Unidades de impresión
///</summary>
// /<param name = "count"></param>
///< ;returns & gt& lt/returns & gt;
Unidad de impresión de cadenas privadas (entero) p>
{
Cambiar (recuento)
{
Caso 1: devolver ""
Caso 2: devolver "diez mil";
Caso 3: devuelve "mil millones";
p>
Caso 4: Devuelve "billones";
Valor predeterminado: Devuelve "";
}
}
}
}