elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
27 Mayo 2012, 23:45  


Tema destacado: Personaliza-Escoge el diseño del foro que más te guste.

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java (Moderadores: Debci, Leyer)
| | | |-+  [RETO ABIERTO] Cambio de base ~
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [RETO ABIERTO] Cambio de base ~  (Leído 1,821 veces)
Dnk!

Desconectado Desconectado

Mensajes: 38



Ver Perfil WWW
[RETO ABIERTO] Cambio de base ~
« en: 29 Noviembre 2010, 23:28 »

Reto abierto:

# Se puede realizar en cualquier lenguaje.
# Tipo de Reto: Ejercicio sencillo
# Categoria: Abierto
# Fecha de entrega: 04/11/2010 , empiezan votaciones el 04/11/2010
# Sources abiertos: Sí

Citar
1)Escriba un programa JAVA que lea del teclado un entero en base 10 y escriba la secuencia de
caracteres que representa dicho número en la base especificada:
Introduce un entero (base 10): 4833
Introduce una base: 25
El número leído en base 25 es:7I8 (es una i, no un uno)

2)Escriba un programa JAVA que lea del teclado un entero, indicando la base en la que está
expresado y una secuencia de caracteres que represente un número en dicha base, y escriba su
valor en base 10.
Base: 25
Número en base 25:7I8 (es una i, no un uno)
El número leído en base 10 es:4833

Nota: Hay 25 caracteres de la ‘A’ a la ‘Z’. Por lo tanto podemos representar números desde base 2
hasta base 36. Debes leer las secuencias hasta que encuentres un carácter no válido para la base
introducida.


En línea




Comentar es agradecer.
Visita Mi Blob
Shell Root


Desconectado Desconectado

Mensajes: 2.456


Alex Jurado


Ver Perfil WWW
Re: [RETO ABIERTO] Cambio de base ~
« Respuesta #1 en: 29 Noviembre 2010, 23:41 »

Apuesto mi laptop, a que no es un reto, sino una tarea. :D


En línea

---
Dnk!

Desconectado Desconectado

Mensajes: 38



Ver Perfil WWW
Re: [RETO ABIERTO] Cambio de base ~
« Respuesta #2 en: 30 Noviembre 2010, 20:52 »

Viendo que no se animan, no tengo mas remedio que dejar aqui la solucion, para las h4xoRs Desconfiados. Un gusto en compartirlo con vosotros:

Código
/* AUTOR: d3n3k4 (Dnk!)
* FECHA: 30/NOV/2010
* DESCRIPCION:
* - AnyDecimalToBaseN: Convierte un numero decimal a otro en Base N "2..36"
* - AnyBaseNToDecimal: Convierte un numero en Base N "2..36" a otro decimal
* USO:
* String var = AnyDecimalToBaseN(334,2);
* long var = AnyBaseNToDecimal("334",16);
* NOTA: Este codigo es libre y puede ser usado,modificado... siempre y cuando se
* mantenga los creditos y comentarios del autor.
*/

 
public class conversorNBases {
public static String AnyDecimalToBaseN (long numero,int base) {
String resultado = "";
long potMax = 0,res = 0;
 
while (numero>=Math.pow(base, potMax + 1))
potMax++;
 
while (potMax >= 0) {
res = numero/(long)Math.pow(base, potMax);
if (res > 9)
resultado += (char)(res+55);
else
resultado += res;
if (numero >= Math.pow(base, potMax))
numero = numero%(long)Math.pow(base, potMax);
potMax--;
}
return resultado;
}
public static long AnyBaseNToDecimal(String numero,int base) {
long resultado = 0;
char[] V_numero = numero.toCharArray();
 
for (int i = 0; i < V_numero.length; i++) {
resultado = resultado * base;
resultado = resultado + Character.getNumericValue(V_numero[i]);
}
return resultado;
}
}
 

xDnk!  ::)
En línea




Comentar es agradecer.
Visita Mi Blob
Debci
Moderador
***
Desconectado Desconectado

Mensajes: 1.945


Actualizate o muere!


Ver Perfil WWW
Re: [RETO ABIERTO] Cambio de base ~
« Respuesta #3 en: 1 Diciembre 2010, 22:16 »

Se agradece el aporte.

Saludos
En línea

ghastlyX
Colaborador
***
Desconectado Desconectado

Mensajes: 1.894



Ver Perfil
Re: [RETO ABIERTO] Cambio de base ~
« Respuesta #4 en: 2 Diciembre 2010, 17:00 »

El primero puede hacerse bastante más corto haciéndolo recursivamente. No lo probado, pero deberían funcionar las dos funciones.
Código
public class conversor {
   public static String decimalBase(long x, int base) {
       String res;
       if (x%base <= 9) res = new String(String.valueOf((char)(x%base + '0')));
       else res = new String(String.valueOf((char)(x%base - 10 + 'A')));
       if (x/base > 0) res = decimalBase(x/base, base).concat(res);
       return res;
   }
 
   public static long baseDecimal(String numero, long base) {
       long res = 0;
       for (int i = 0; i < numero.length(); ++i)
           res = res*base + (long)Character.getNumericValue(numero.charAt(i));
       return res;
   }
}

Siento si hay algo del código que no sea necesario, como por ejemplo castings. Java no es el lenguaje que uso habitualmente.

EDITO:
No había visto lo de en cualquier lenguaje. Pongo la primera función en C++ de una forma más compacta.
Código
typedef long long ll;
 
string dtoB(ll x, int b) {
   return ((x/b > 0)?dtoB(x/b, b):"") + char(x%b + (x%b < 10)*'0' + (x%b >= 10)*('A' - 10));
}
« Última modificación: 2 Diciembre 2010, 17:20 por ghastlyX » En línea
Dnk!

Desconectado Desconectado

Mensajes: 38



Ver Perfil WWW
Re: [RETO ABIERTO] Cambio de base ~
« Respuesta #5 en: 2 Diciembre 2010, 20:28 »

ghastlyX: Estan muy bien tus codes, ahora cuando saque tiempo, los revisare, porque aun no los comprendo del todo. Gracias por aportar  :P
En línea




Comentar es agradecer.
Visita Mi Blob
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Cambio de Placa Base
Hardware
KURIAKIN 5 529 Último mensaje 5 Febrero 2006, 19:21
por KURIAKIN
ONO PC ABIERTO
Electrónica
jare3d 0 641 Último mensaje 18 Febrero 2006, 12:39
por jare3d
No arranca el ordenador tras cambio de placa base
Dudas Generales
metzeler 5 1,087 Último mensaje 4 Noviembre 2006, 03:40
por DSiGN3r
[SQL INJECTION] ¿Me ayudas en un reto? (Abierto) « 1 2 »
Nivel Web
ZaPa 21 4,771 Último mensaje 20 Marzo 2010, 14:56
por tragantras
cambio de base en C « 1 2 »
Programación C/C++
mapers 15 3,172 Último mensaje 16 Marzo 2010, 16:55
por Zzombi
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines