• Lunes 23 de Diciembre de 2024, 04:36

Autor Tema:  Mostrar un numero en su equivalente en otra base  (Leído 1897 veces)

rayman18

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Mostrar un numero en su equivalente en otra base
« en: Sábado 21 de Noviembre de 2009, 13:33 »
0
Hola a todos, soy nuevo en el foro y acudo a vosotros en busca de ayuda.

Tengo que realizar un metodo de una clase Numero(con un atributo valorde tipo double) que sea capaz de mostrar un numero en su equivalente en otra base b, entre 2 y 9.

Para convertir un número decimal a otra base hay que seguir los siguientes pasos:

-- Al dividir el número sucesivamente por la base b, encontramos que los restos que obtenemos son los dígitos del nuevo número en orden reciente de posición y los cocientes (de la división entera) en cada iteración son la parte del número N que queda por cambiar de base.

---Cada resto debe añadirse en la posición más significativa del nuevo número.

---El proceso termina cuando nuestro número N queda reducido a 0.

Por ejemplo 8 en base 10 es igual a 1000 en base 2. Se pide un método que devuelva el entero más próximo al valor de la clase Numero convertido a otra base, la cual se indica por parámetro.
Así, el método tendrá esta cabecera:


public Numero convertirABase(byte base)




Alguien me puede echar una mano?¿

rayman18

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: Mostrar un numero en su equivalente en otra base
« Respuesta #1 en: Sábado 21 de Noviembre de 2009, 13:46 »
0
Aqui dejo el algoritmo de resolucion, pero no consigo escribirlo en codigo.

Código: Text
  1. public Numero convertirABase(byte base)
  2. ***Do-while, porque  no se conoce cuantas veces hay que dividir el numero***
  3.  
  4. n=redondear(valor)
  5. resultado=0
  6. peso=1  ***posicion del digito
  7.  
  8.  
  9. if(base>1 && base>10)
  10.     while(n!=0)
  11.         resultado= resultado + (n%base)*peso
  12.         n=n/base
  13.         peso=peso*10
  14. else
  15.     print"la base debe estar entre 2 y 9"
  16.  
  17. retunr new Numero(resultado)
  18.  

gophlb

  • Visitante
Re: Mostrar un numero en su equivalente en otra base
« Respuesta #2 en: Sábado 21 de Noviembre de 2009, 18:07 »
0
Cita de: "rayman18"
Aqui dejo el algoritmo de resolucion, pero no consigo escribirlo en codigo.

Código: Text
  1. public Numero convertirABase(byte base)
  2. ***Do-while, porque  no se conoce cuantas veces hay que dividir el numero***
  3.  
  4. n=redondear(valor)
  5. resultado=0
  6. peso=1  ***posicion del digito
  7.  
  8.  
  9. if(base>1 && base>10)
  10.     while(n!=0)
  11.         resultado= resultado + (n%base)*peso
  12.         n=n/base
  13.         peso=peso*10
  14. else
  15.     print"la base debe estar entre 2 y 9"
  16.  
  17. retunr new Numero(resultado)
  18.  
pues hombre...la verdad es que entre codigo java y ese codigo no es que haya demasiada diferencia. si no sabes transformar pseudocodigo en codigo de un lenguaje, es un sintoma muy claro de que tienes que estudiar algo mas sobre ese lenguaje.

has leido o estudiado algo de java? no es se te esta pidiendo que construyas el sistema de calculo de la nasa, solo una clase, cosa que con leerte dos o tres capitulos de cualquier libro de java serias capaz de hacer sin ninguna duda.

repasa un poco e intentalo por tu cuenta. luego pon tu codigo java y te echo una mano ;)

rayman18

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: Mostrar un numero en su equivalente en otra base
« Respuesta #3 en: Sábado 21 de Noviembre de 2009, 19:16 »
0
lo que he hecho es esto:

Código: Java
  1.  
  2.  public Numero convertirABase(byte base){
  3.          long n=Math.round(valor);      
  4.          double resultado=0;
  5.          int pos=1;    
  6.      
  7.          if(base>1 && base<10){
  8.             while(n!=0){
  9.                resultado= resultado + (n%base)*pos;
  10.                n=n/base;
  11.                pos=pos*10;
  12.             }
  13.          }
  14.          else System.out.println("la base debe estar entre 2 y 9");
  15.      
  16.          
  17.          return new Numero(resultado);
  18.       }
  19.     
  20.     
  21.  



Gracias por la ayuda

gophlb

  • Visitante
Re: Mostrar un numero en su equivalente en otra base
« Respuesta #4 en: Sábado 21 de Noviembre de 2009, 21:59 »
0
bien, eso esta algo mejor :)

asi de primeras, no te voy a escribir el codigo, sino que te voy a decir lo que te falta:

1- Te falta un metodo main que debe llevar toda clase principal, y que es la que se ejecuta. En tu caso, tendras que investigar como se le pasan parametros a este metodo, porque lo necesitaras para recoger el valor de tu variable "base".

2- Dentro de ese metodo main, deberas llamar al metodo que realice el cambio de base, con sus parametros y etc :)

3- El tipo "numero" no existe...slvo que hayas hecho una clase que se llame asi. Si el resultado es un decimal, necesitaras que la variable sea de tipo double, Double, float, BigDecimal...yo te recomendaria un simple double. Si por el contrario es un entero, que sea del tipo int.

de momento con eso te basta y sobra, mañana le echo un vistazo al codigo que hayas intentado de nuevo :)
animo...