Programa para convertir bases numericas

Iniciado por gOoComeDy, 24 Septiembre 2011, 03:22 AM

0 Miembros y 1 Visitante están viendo este tema.

gOoComeDy

Hola!, apenas he empezado a programar y me han dicho que C es buena base.
sin embargo ya se algo y desde hace dos semanas me preguntaba como puedo hacer
un programa que convierta de base decimal cualquier numero a cualquier base (Obviamente dada por el usuario) sin muchas limitaciones, me podrian ayudar a idearlo correctamente? :D

.mokk.

#1
Lo siento lei mal, nose como fue que lei sumatoria de bases jeje

Aun asi dejo lo que comente aqui por si interesa
http://pastebin.com/f9hQeCs5

rir3760

Solo tienes que tomar el numero y dividirlo por la base una y otra vez hasta que termine en cero. En cada iteracion el residuo de la división (el modulo) te dará el dígito menos significativo (hasta ese momento).

Inténtalo primero con papel y lápiz usando las bases mas utilizadas (8, 10 y 16).

Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

fary

Para convertir números de una base a otra tienes que dividir por la base a la que lo quieres pasar, ejemplo...

125 por ejemplo a octal, lo que tenemos que hacer es dividir sucesivamente el número entre la base (en este caso 8 ya que queremos pasarla a octal) asta que el cociente sea mas pequeño que el dividendo  entonces se colocara el ultimo cociente y los demas restos al revez, me explico mejor  haciendolo:

125/8 = 15 en el cociente  y de resto 5

aora volvemos a dividir pero aora ya dividimos entre el cociente

15/8 = 7 de resto y 1 en el cociente.

Ya acabamos las cuentas ya que el cociente que nos a dado es menor a la base a la que lo queremos pasar aora tenemos que colocar los números

El cociente de la ultima division 1 y el resto de la ultima division 7 y el resto de la penultima division 5 dan 175 y efectivamente 125 en base 10 (decimal) es 175 en base 8 (octal) compruebalo con la calculadora y verás  :P

Aora para hacer la inversa pasarlo a decimal lo que hay que hacer es aplicar esta fórmula:



te lo ago para que lo veas tambien

1·8^2 + 7·8^1 + 5·8^0 = 64 +56 + 5= 125 en decimal. En esta formula los resultados se suman no se colocan.

Es igual para pasarlo a todas las bases y para hacer la inversa :P  espero haberte ayudado.

saludos.
Un byte a la izquierda.

тαптяα

esta imagen te ayudará:



Tu tendrás que saber como almacenar el resto (una pistita: "mod" ) y realmente eso es todo.

gOoComeDy

Entonces...Podria transformarlo a cualquier base?
suena bien!
Esperen resultados!
;-)