// CONVERTIDOR ENTRE BASES NUMERICAS
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
#define tam 20
void dato(char *, char[]);
void conv_cad(int, int, char *);
int conv_b10(char *, int);
int b10(char);
int exp(int, int);
void main(void)
{
int b_i, b_o, b10;
clrscr();
printf("Por favor, si el nUmero es en binario,\n");
printf("que sea mAximo de 16 digitos\n\n");
dato("Introducir el nUmero inicial: ",num_i);
dato("A que base pertenece?: ",b_a);
b_i = atoi(b_a);
dato("Convertir hacia que base?: ",b_a);
b_o = atoi(b_a);
b10 = conv_b10(num_i, b_i);
conv_cad(b10, b_o, n_cad);
printf("ConversiOn = %s ", n_cad);
getch();
}
void dato(char *cad, char *num)
{
char *sal;
printf("%s", cad);
scanf("%s", num);
}
void conv_cad(int b10, int b_o, char *cad)
{
itoa(b10, cad, b_o);
}
int conv_b10(char *num_i, int b_i)
{
int suma, val, aux;
if(*num_i == '\0') return(0);
val = b10(num_i[0]);
aux = exp(b_i, strlen(num_i)-1);
suma = ( aux * val ) + conv_b10(num_i+1,b_i);
return(suma);
}
int b10(char x)
{
int n10, y;
if( y > 47 && y < 58) n10 = y - 48;
if( y > 64 && y < 71) n10 = y - 55;
if( y > 96 && y < 103) n10 = y - 87;
return(n10);
}
int exp(int y, int x)
{
int k,sal1=1;
for(k=1;k<=x;k++) sal1 = sal1 * y;
return(sal1);
}