Conversi贸n base 10 a base b
Hola estimados compa帽eros programadores espero que se encuentren muy bien y me puedan orientar en mi duda, tengo que realizar un programa en el que yo ingrese primeramente un numero en base 10 y posteriormente la base a la cual deseo convertir.
Para convertir un numero de base a 10 a cualquier base se necesita hacer lo siguiente:
1.- Dividir el numero en base 10 entre la base.
2.- A partir de la divisi贸n se obtendr谩 una parte entera y otra parte fraccional, la parte fraccional ser脿 multiplicada por la base a la que se necesita convertir, esto nos arrojar谩 el 煤ltimo d铆gito del n煤mero en la nueva base.
Un ejemplo:
Numero en base 10 = 20
Base a la que se desea convertir: = 8 ( Octal )
Procedimiento:
Divisi贸n::Parte entera::Parte fraccional:: Multiplicaci贸n de P.F por "b" "8"::D铆gito del numero en la nueva base
20/8= 2 .5 .5*8 4
*** 2 2
*** : La divisi贸n ya no es posible ya que se debe dividir hasta que el resultado obtenido sea menor que la base.
El resultado del numero 20 decimal a base Octal por lo tanto es 24, ya que se toman en orden inverso, el c贸digo lo hice de la siguiente manera pero solamente me funciona cuando de la primer divisi贸n el resultado es menor que la base, por ejemplo si me convierte el numero 50 a base 8 ya que el resultado de la divisi贸n es 6.25 y es menor que la base "8" debe utilizar solamente funciones sencillas como if,while,do while, espero que me puedan ayudar y muchas gracias por su ayuda, en verdad.
Por favor si no me di a entender, favor de contactarme de verdad me es muy urgente terminar este programa, mi correo es [email protected], gracias amigos.
Cita:
#include<stdio.h>
#include<stdlib.h>
float fraccion(float resultado)
{
int n;
n=resultado;
return resultado-n;
}
int entero(float resultado)
{
return resultado;
}
main()
{
int numero;
float base;
float resultado;
int digitob;
printf("Ingrese el numero en base 10 que desea convertir\n");
scanf("%i",&numero);
printf("Ahora ingrese la base\n");
scanf("%f",&base);
do
{
resultado=numero/base;
digitob=fraccion(resultado)*base;
}
while(entero(resultado)>base);
printf("El resultado es%i%i\n",entero(resultado),digitob);
}
Para convertir un numero de base a 10 a cualquier base se necesita hacer lo siguiente:
1.- Dividir el numero en base 10 entre la base.
2.- A partir de la divisi贸n se obtendr谩 una parte entera y otra parte fraccional, la parte fraccional ser脿 multiplicada por la base a la que se necesita convertir, esto nos arrojar谩 el 煤ltimo d铆gito del n煤mero en la nueva base.
Un ejemplo:
Numero en base 10 = 20
Base a la que se desea convertir: = 8 ( Octal )
Procedimiento:
Divisi贸n::Parte entera::Parte fraccional:: Multiplicaci贸n de P.F por "b" "8"::D铆gito del numero en la nueva base
20/8= 2 .5 .5*8 4
*** 2 2
*** : La divisi贸n ya no es posible ya que se debe dividir hasta que el resultado obtenido sea menor que la base.
El resultado del numero 20 decimal a base Octal por lo tanto es 24, ya que se toman en orden inverso, el c贸digo lo hice de la siguiente manera pero solamente me funciona cuando de la primer divisi贸n el resultado es menor que la base, por ejemplo si me convierte el numero 50 a base 8 ya que el resultado de la divisi贸n es 6.25 y es menor que la base "8" debe utilizar solamente funciones sencillas como if,while,do while, espero que me puedan ayudar y muchas gracias por su ayuda, en verdad.
Por favor si no me di a entender, favor de contactarme de verdad me es muy urgente terminar este programa, mi correo es [email protected], gracias amigos.
Cita:
#include<stdio.h>
#include<stdlib.h>
float fraccion(float resultado)
{
int n;
n=resultado;
return resultado-n;
}
int entero(float resultado)
{
return resultado;
}
main()
{
int numero;
float base;
float resultado;
int digitob;
printf("Ingrese el numero en base 10 que desea convertir\n");
scanf("%i",&numero);
printf("Ahora ingrese la base\n");
scanf("%f",&base);
do
{
resultado=numero/base;
digitob=fraccion(resultado)*base;
}
while(entero(resultado)>base);
printf("El resultado es%i%i\n",entero(resultado),digitob);
}
Hola Bro!, pues mira usa m贸dulo(a%b)...la conversi贸n es dividiendo y almacenando lo que sobra...te dejo un ejemplo
public class conver{
public static String alfa = \\\"0123456789ABCDEF\\\";
public static void main(String args[]){
try{
if(args[0].equalsIgnoreCase(\\\"-c\\\"))
System.out.println(DecTo(Integer.parseInt(args[1]),Integer.parseInt(args[2])));
else if(args[0].equalsIgnoreCase(\\\"-d\\\"))
System.out.println(BasToDec(args[1],Integer.parseInt(args[2])));
else{
String tmp = args[876];
return;
}
}catch(Exception phicar){
System.err.println(\\\"Paila 帽ero\\\");
return;
}
}
public static String DecTo(int a,int b){
String res = \\\"\\\"+alfa.charAt(a%b);
while((a/=b)>0)
res = alfa.charAt(a%b)+\\\"\\\"+res;
return res;
}
public static int BasToDec(String a,int base){
int res = 0,conta=0;
for(int n = a.length()-1;n>-1;n--)
res+=alfa.indexOf(a.charAt(n))*Math.pow(base,conta++);
return res;
}
}
public class conver{
public static String alfa = \\\"0123456789ABCDEF\\\";
public static void main(String args[]){
try{
if(args[0].equalsIgnoreCase(\\\"-c\\\"))
System.out.println(DecTo(Integer.parseInt(args[1]),Integer.parseInt(args[2])));
else if(args[0].equalsIgnoreCase(\\\"-d\\\"))
System.out.println(BasToDec(args[1],Integer.parseInt(args[2])));
else{
String tmp = args[876];
return;
}
}catch(Exception phicar){
System.err.println(\\\"Paila 帽ero\\\");
return;
}
}
public static String DecTo(int a,int b){
String res = \\\"\\\"+alfa.charAt(a%b);
while((a/=b)>0)
res = alfa.charAt(a%b)+\\\"\\\"+res;
return res;
}
public static int BasToDec(String a,int base){
int res = 0,conta=0;
for(int n = a.length()-1;n>-1;n--)
res+=alfa.indexOf(a.charAt(n))*Math.pow(base,conta++);
return res;
}
}
