CONV_BASES.c



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