ANTES DE PREGUNTAR, revisar preguntas FRECUENTES, REGLAMENTO, DICCIONARIO de la comunidad TR. Haz las preguntas que te inquieten! Estaremos para responder. Contribuyamos invitando a personas a unirse, CONTESTANDO preguntas, y PREGUNTANDO.

Ver más
  • 68,075 Miembros
  • 62,781 Temas
  • 13,949 Seguidores
  • 0

Cambio de Base en Java


Cambio de Base en Java La comunidad de Preguntas y Respuestas mas grande de Taringa!
Cambio de Base en Java


Hola Chicos, de antemano agradecer la ayuda prestada con mi duda anterior sobre el coseno de un angulo utilizando la serie de Taylor. Hoy vengo con el siguiente problema:

Cambio de Base en Java


Debo cambiar de base cualquier numero en Base 10 y pasarlo a la base que el usuario desea sin utilizar matrices, vectores o el método Integer.toString (). Espero de sus prontas respuestas, un saludo.

Cambio de Base en Java
  • 0
  • 3Calificación
  • 0Seguidores
  • 1.039Visitas
  • 0Favoritos

9 comentarios

@secpre Hace más de 1 año
pero para guardar el resultado, vas a necesitar un vector... si la base es > a 10, donde vas a guardar los digitos que sean letras?

Tenes que hacer mas o menos esto (supongo que ya tomaste todos los datos y eso... esta la parte importante nomas)
Tenes una variable "numero" y otra "base", mas un vector de chars (o int, algo que alcance a guardar todos los digitos de la base. en cada posicion del vector tiene que poder almacenarse el numero de la base, sino no alcanza para representar), para guardar el resu
@secpre Hace más de 1 año
para guardar el resultado. -> el vector se llama "resultado", y esta inicializado a cero.

resto=1;
posicion_digito = 0; //(supongo que los vectores empiezan con indice 0, como en C)

while (numero != 0) // distinto de 0, no se como sera en java

- resultado(posicion_digito) = numero mod base
- numero = (int) (numero/base) // o haces un cast a int, o usas division entera (que no se si hay en java, pero la idea es CORTAR la parte decimal (NO redondear, sino truncar. Capaz hay equivalente de floor(doubl
@secpre Hace más de 1 año
Capaz hay equivalente de floor(double) )

fin del while

Listo, en cada posicion del vector tenes los "digitos". Si la base es mayor a 10, vas a tener cifras mayores a 9, que tendrias que reemplazar por letras de la A a la Z, y si se te acaban, inventar mas caracteres... o imprimir todo en numeros, separando las cifras mas o menos asi: | 1 | 2 | 20 | 8 | 0 |

Si no usas un vector para guardar el resultado, no podes calcular el numero para bases mayores a 10, asi que supongo que si te dejan usar vecto
@secpre Hace más de 1 año
asi que supongo que si te dejan usar vectores para eso, pero no para el calculo en si.

Probado en matlab:
@secpre Hace más de 1 año


numero = 120;
base = 2;
i = 1;
while (numero > 0)
    resultado(i) = mod( numero,base );
    numero = floor( numero/base );
    i = i + 1;
end
disp(resultado)

@secpre Hace más de 1 año
el resultado de eso es (la salida del programa)

0 0 0 1 1 1 1


que es
= 2^0 * 0 + 2^1 * 0 + 2^2 * 0 + 2^3 * 1 + 2^4 * 1 + 2^5 * 1 + 2^6 * 1

= 0 + 0 + 0 + 4 + 16 + 32 + 64

= 120
@secpre Hace más de 1 año
mas complcada, con numero= 64754733464 ( que es F13AED198 en hexa, base 16 )

8 9 1 13 14 10 3 1 15



Aclaracion (igual, se ve en la cuenta que esta mas arriba) el resultado del programa imprime al vector del indice 0 al max, asique el numero en realidad se escribe al revez... 15 | 1 | 3 | 10 | 14 | 13 | 1 | 9 | 8 |

que reemplazando los numeros de 10 a 15 por A-F, da lo que deberia.
@secpre Hace más de 1 año
Taringa! Devolveme las respuestas con mas caracteres!!!!
Tienes que ser miembro para responder en este tema