Conversión de Bases - dambort/algos GitHub Wiki
Problema: dado una base de entrada, una base de salida, y un numero (en la base de entrada) se desea saber el equivalente a ese numero en la base de salida.
Ejemplos:
- Si base de entrada=2, base de salida=10 y numero=101;
Salida: El numero en base 10 es: 5
- Si base de entrada=10, base de salida=16 y numero=27;
Salida: El numero en base 16 es: 1b
- Si base de entrada=16, base de salida=8 y numero=2a;
Salida: El numero en base 8 es: 52
Idea del algoritmo:
- Para pasar de base 10 a otra hay que dividir el numero por la base, concatenando los restos de derecha a izquierda.
- Para pasar de una base a base 10 hay que multiplicar de derecha a izquierda el numero por la base elevada a la "posición" del numero comenzando desde 0.
- Para pasar de una base a otra hay que pasar de la base de entrada a base 10 y luego de base 10 a base de salida
La función "convertir_base()" recibe como parámetros un numero, una base de entrada y una base de salida, dependiendo de la base de entrada y salida llama a la función "base_a_decimal()" o "decimal_a_base()" para realizar la conversión.
Si el numero ingresado no pertenese a la base de entrada se mostrara un error y la funcion **"base_a_decimal()"** retornara 0
Código
Disponible en Enciclopedia Algoritmos C++, Conversión de Bases
Ejemplo de uso
Disponible en ejemplo conversión de bases
Complejidad: O(n)
En Ideone
Problemas en sitios jueces que se pueden resolver con conversión de bases.
Colaborador autor del artículo: