elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Ayuda con un problema...
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con un problema...  (Leído 3,322 veces)
Zero_1

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Ayuda con un problema...
« en: 22 Noviembre 2007, 18:05 pm »

hola; necesito imprimir una moneda asi:
ejemplo:

si ingreso
$432.22

y que en la impresion salga
*******Cuatrocientos Treinta y Dos con 22/100*******


alguien sabe la respuesta???


gracias...


En línea

egyware


Desconectado Desconectado

Mensajes: 526



Ver Perfil WWW
Re: Ayuda con un problema...
« Respuesta #1 en: 22 Noviembre 2007, 20:03 pm »

mmm
no es tan dificil como uno lo piensa
primero create una clase para eso
segundo a un metodo pasale tu numero
luego separa las unidades, decimas, y centecimas....(ejemplo 400 10 1 ....) y
luego las comparas y en un String guardas tu resultado
tienes tu numero 458
lo divides por 100
458/100= 4.58 -> guardas solo el numero entero por ejeplo en int centena;
luego le restas centena*100 y te queda
numero - centena*100 =58
luego tu nuevo numero que te queda lo divides por 10
58/10 = 5.8 -> guardas solo el numero entero en int decena
y haces lo mismo le restas decena * 10 y te quedara 8 y lo guardas
luego con if o switch comparas centenas, decenas y unidades comparas para que tomen sus respectivos nombre
ej
switch(decena){
case 1:
String Wordnum = Wordnum + "Diez";
.....
y haces lo mismo
con los decimales no se me ocurrio pero puedes hacer algo parecido
espero que te aya ayudado y cuando tengas la clase subela porfa como pa verla y como te a queda tu creacion
xaaauuuu
suerte


En línea

Hearts

Desconectado Desconectado

Mensajes: 182



Ver Perfil
Re: Ayuda con un problema...
« Respuesta #2 en: 22 Noviembre 2007, 20:35 pm »

Eso esta muy bien y creo que es la unica manera, aunque el creo que quiere que al insertar un valor se lo muestre como cadena y no tener que poner tu "a mano" en el codigo que 10 es "diez".

Pero bueno como te dijeron arriba asi es una forma y encontre por google un codigo mas o menos orientativo:

Código:
    public class conversionNumeroEnCadena {
    private int flag;
    public int numero;
    public String num;
    public String num_letra;
    public String num_letras;
    public String num_letram;
   
    public conversionNumeroEnCadena(){
    numero = 0;
    flag=0;
    }
    public conversionNumeroEnCadena(int n){
    numero = n;
    flag=0;
    }
   
   
        private String unidad(int numero){
   
    switch (numero){
    case 9:
    num = "nueve";
    break;
    case 8:
    num = "ocho";
    break;
    ...........
    ...........
   
    case 2:
    num = "dos";
    break;
    case 1:
    if (flag == 0)
  num = "uno";
    else
  num = "un";
    break;
    case 0:
    num = "";
    break;
    }
    return num;
    }
   
    private String decena(int numero){
   
    if (numero >= 90 && numero <= 99)
    {
    num_letra = "noventa ";
    if (numero > 90)
    num_letra =
    num_letra.concat("y ").concat(unidad(numero - 90));
    }
    else if (numero >= 80 && numero <= 89)
    {
    num_letra = "ochenta ";
    if (numero > 80)
    num_letra =
    num_letra.concat("y ").concat(unidad(numero - 80));
    }
   
    ...........
    ...........
   
    if (numero == 20)
    num_letra = "veinte ";
    else
    num_letra =
  "veinti".concat(unidad(numero - 20));
    }
    else if (numero >= 10 && numero <= 19)
    {
    switch (numero){
    case 10:
   
    num_letra = "diez ";
    break;
   
    case 11:
   
    num_letra = "once ";
    break;
   
    case 12:
   
    num_letra = "doce ";
    break;
   
    ..............
    ..............
    case 19:
   
    num_letra = "diecinueve ";
    break;
   
    }
    }
    else
    num_letra = unidad(numero);
   
    return num_letra;
    }
   
    private String centena(int numero){
    if (numero >= 100)
    {
    if (numero >= 900 && numero <= 999)
    {
    num_letra = "novecientos ";
    if (numero > 900)
  num_letra =
  num_letra.concat(decena(numero - 900));
    }
  else if (numero >= 800 && numero <= 899)
    {
    num_letra = "ochocientos ";
    if (numero > 800)
  num_letra =
  num_letra.concat(decena(numero - 800));
    }
   
    ...........
    ...........
   
  else if (numero >= 200 && numero <= 299)
    {
    num_letra = "doscientos ";
    if (numero > 200)
  num_letra =
  num_letra.concat(decena(numero - 200));
    }
  else if (numero >= 100 && numero <= 199)
    {
    if (numero == 100)
  num_letra = "cien ";
    else
  num_letra =
  "ciento ".concat(decena(numero - 100));
    }
    }
    else
    num_letra = decena(numero);
   
    return num_letra;
    }
   
    private String miles(int numero){
    if (numero >= 1000 && numero <2000){
    num_letram =
    ("mil ").concat(centena(numero%1000));
    }
    if (numero >= 2000 && numero <10000){
    flag=1;
    num_letram =
    unidad(numero/1000).concat("mil").concat
    (centena(numero%1000));
    }
    if (numero < 1000)
    num_letram = centena(numero);
   
    return num_letram;
  }
   
   
    public String convertirLetras(int numero){
    num_letras = miles(numero);
    return num_letras;
    }
    }

De Santana

salu2
En línea

Zero_1

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Ayuda con un problema...
« Respuesta #3 en: 25 Noviembre 2007, 03:14 am »

Código:
    public class conversionNumeroEnCadena {
    private int flag;
    public int numero;
    public String num;
    public String num_letra;
    public String num_letras;
    public String num_letram;
   
    public conversionNumeroEnCadena(){
    numero = 0;
    flag=0;
    }
    public conversionNumeroEnCadena(int n){
    numero = n;
    flag=0;
    }
   
   
        private String unidad(int numero){
   
    switch (numero){
    case 9:
    num = "nueve";
    break;
    case 8:
    num = "ocho";
    break;
    ...........
    ...........
   
    case 2:
    num = "dos";
    break;
    case 1:
    if (flag == 0)
  num = "uno";
    else
  num = "un";
    break;
    case 0:
    num = "";
    break;
    }
    return num;
    }
   
    private String decena(int numero){
   
    if (numero >= 90 && numero <= 99)
    {
    num_letra = "noventa ";
    if (numero > 90)
    num_letra =
    num_letra.concat("y ").concat(unidad(numero - 90));
    }
    else if (numero >= 80 && numero <= 89)
    {
    num_letra = "ochenta ";
    if (numero > 80)
    num_letra =
    num_letra.concat("y ").concat(unidad(numero - 80));
    }
   
    ...........
    ...........
   
    if (numero == 20)
    num_letra = "veinte ";
    else
    num_letra =
  "veinti".concat(unidad(numero - 20));
    }
    else if (numero >= 10 && numero <= 19)
    {
    switch (numero){
    case 10:
   
    num_letra = "diez ";
    break;
   
    case 11:
   
    num_letra = "once ";
    break;
   
    case 12:
   
    num_letra = "doce ";
    break;
   
    ..............
    ..............
    case 19:
   
    num_letra = "diecinueve ";
    break;
   
    }
    }
    else
    num_letra = unidad(numero);
   
    return num_letra;
    }
   
    private String centena(int numero){
    if (numero >= 100)
    {
    if (numero >= 900 && numero <= 999)
    {
    num_letra = "novecientos ";
    if (numero > 900)
  num_letra =
  num_letra.concat(decena(numero - 900));
    }
  else if (numero >= 800 && numero <= 899)
    {
    num_letra = "ochocientos ";
    if (numero > 800)
  num_letra =
  num_letra.concat(decena(numero - 800));
    }
   
    ...........
    ...........
   
  else if (numero >= 200 && numero <= 299)
    {
    num_letra = "doscientos ";
    if (numero > 200)
  num_letra =
  num_letra.concat(decena(numero - 200));
    }
  else if (numero >= 100 && numero <= 199)
    {
    if (numero == 100)
  num_letra = "cien ";
    else
  num_letra =
  "ciento ".concat(decena(numero - 100));
    }
    }
    else
    num_letra = decena(numero);
   
    return num_letra;
    }
   
    private String miles(int numero){
    if (numero >= 1000 && numero <2000){
    num_letram =
    ("mil ").concat(centena(numero%1000));
    }
    if (numero >= 2000 && numero <10000){
    flag=1;
    num_letram =
    unidad(numero/1000).concat("mil").concat
    (centena(numero%1000));
    }
    if (numero < 1000)
    num_letram = centena(numero);
   
    return num_letram;
  }
   
   
    public String convertirLetras(int numero){
    num_letras = miles(numero);
    return num_letras;
    }
    }

De Santana

salu2

tambien habia encontrado ese codigo; igual mi problema es con los decimales;
no logro escribir el "**** con 32/100 *****

Aun asi gracias

PD.: egyware, "mi creacion" te la debo ya que asi no es lo que necesito pero gracias por el aporte
En línea

egyware


Desconectado Desconectado

Mensajes: 526



Ver Perfil WWW
Re: Ayuda con un problema...
« Respuesta #4 en: 26 Noviembre 2007, 13:43 pm »

 :huh: :huh:

tu tienes problema al sacar los decimales  :-(
mmmm
loading...
se ve dificil pero se me ocurio algo
tienes tu decimal .xxxx
lo multiplicas por diez y te queda x.xxx
(la idea es dejarlo sin decimales)
luego compruebas los decimales restantes sean mayores a 1
sino
lo vuelves a multiplicar por 10 hasta que no quedes con decimales,
cuando no quedes con decimales y quedes con un numero algo asi xxxx.0
ldebes saber cuantas veces sera que multiplicaste por 10 (para eso deberias haber guardado en un int)que ese numero sera el exponencial de tu denominador en este caso seria algo asi

***** xxxx/10n **** y n es la cantidad de decimales

espero que te sirva xauu
suerte

PS:No te servira con decimales periodicos ya que la division es x/9 y en la básica(o primaria en otros paises) jamas aprendi como hacerlo  :-( :D :D :D :xD :xD
 :¬¬


En línea

Zero_1

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Ayuda con un problema...
« Respuesta #5 en: 30 Noviembre 2007, 13:39 pm »

    al ver mi error un poco lo que hice fue  agarrar el numero flotante y restarle la parte entera de este y guardar el resultado e imprimirlo con el DecimalFormat
Código:
DecimalFormat formato = new DecimalFormat(".##");

sn = valor;
num = (float)sn;
    iPart = (int) num;
    fPart = num - iPart;

ejemplo:
453.21 = valor

entonces mi respuesta me daba 0.21 y el DecimalFormat me lo puso a .21
y solo coloque este resultado; gracias a todos x la ayuda
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
problema ayuda
Hacking Wireless
knox08 5 1,284 Último mensaje 20 Octubre 2018, 18:31 pm
por Machacador
Ayuda problema c++
Programación C/C++
boshide10 0 435 Último mensaje 22 Febrero 2019, 03:43 am
por boshide10
Ayuda con un problema
Redes
leandro1998 0 540 Último mensaje 15 Agosto 2019, 03:34 am
por leandro1998
[C++] Divisibilidad por primos de un número por partes
Programación C/C++
El_Lentejas 6 2,229 Último mensaje 17 Junio 2020, 21:56 pm
por dijsktra
Ayuda con un problema
Programación C/C++
gonwhter 1 1,157 Último mensaje 1 Diciembre 2020, 18:02 pm
por @XSStringManolo
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines