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

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  [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 5,707 veces)
Dnk!

Desconectado Desconectado

Mensajes: 38



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

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
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.723


<3


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

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


En línea

Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.
Dnk!

Desconectado Desconectado

Mensajes: 38



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

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
  1. /* AUTOR: d3n3k4 (Dnk!)
  2.  * FECHA: 30/NOV/2010
  3.  * DESCRIPCION:
  4.  * - AnyDecimalToBaseN: Convierte un numero decimal a otro en Base N "2..36"
  5.  * - AnyBaseNToDecimal: Convierte un numero en Base N "2..36" a otro decimal
  6.  * USO:
  7.  * String var = AnyDecimalToBaseN(334,2);
  8.  * long var = AnyBaseNToDecimal("334",16);
  9.  * NOTA: Este codigo es libre y puede ser usado,modificado... siempre y cuando se
  10.  * mantenga los creditos y comentarios del autor.
  11.  */
  12.  
  13. public class conversorNBases {
  14. public static String AnyDecimalToBaseN (long numero,int base) {
  15. String resultado = "";
  16. long potMax = 0,res = 0;
  17.  
  18. while (numero>=Math.pow(base, potMax + 1))
  19. potMax++;
  20.  
  21. while (potMax >= 0) {
  22. res = numero/(long)Math.pow(base, potMax);
  23. if (res > 9)
  24. resultado += (char)(res+55);
  25. else
  26. resultado += res;
  27. if (numero >= Math.pow(base, potMax))
  28. numero = numero%(long)Math.pow(base, potMax);
  29. potMax--;
  30. }
  31. return resultado;
  32. }
  33. public static long AnyBaseNToDecimal(String numero,int base) {
  34. long resultado = 0;
  35. char[] V_numero = numero.toCharArray();
  36.  
  37. for (int i = 0; i < V_numero.length; i++) {
  38. resultado = resultado * base;
  39. resultado = resultado + Character.getNumericValue(V_numero[i]);
  40. }
  41. return resultado;
  42. }
  43. }
  44.  

xDnk!  ::)
En línea




Comentar es agradecer.
Visita Mi Blob
Debci
Wiki

Desconectado Desconectado

Mensajes: 2.021


Actualizate o muere!


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

Se agradece el aporte.

Saludos
En línea

ghastlyX
Ex-Staff
*
Desconectado Desconectado

Mensajes: 1.900



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

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

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
  1. typedef long long ll;
  2.  
  3. string dtoB(ll x, int b) {
  4.    return ((x/b > 0)?dtoB(x/b, b):"") + char(x%b + (x%b < 10)*'0' + (x%b >= 10)*('A' - 10));
  5. }
« Última modificación: 2 Diciembre 2010, 17:20 pm 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 pm »

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
Cd abierto
Software
Toriyama 4 2,499 Último mensaje 11 Agosto 2003, 10:14 am
por Charlie
PSP FIRMWARE 2.60 ABIERTO
Juegos y Consolas
sneyk 7 2,238 Último mensaje 28 Marzo 2006, 01:46 am
por Ponguito
ONO PC ABIERTO
Electrónica
jare3d 0 2,086 Último mensaje 18 Febrero 2006, 12:39 pm
por jare3d
[SQL INJECTION] ¿Me ayudas en un reto? (Abierto) « 1 2 3 »
Nivel Web
ZaPa 21 15,777 Último mensaje 20 Marzo 2010, 14:56 pm
por tragantras
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines