// 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); }