Skip to content

Conversión de Bases

Gonzalo Lopez edited this page Oct 29, 2019 · 7 revisions

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:

  1. Si base de entrada=2, base de salida=10 y numero=101;

Salida: El numero en base 10 es: 5

  1. Si base de entrada=10, base de salida=16 y numero=27;

Salida: El numero en base 16 es: 1b

  1. 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:

Clone this wiki locally