Files
Borland-C/CPP/BASE.CPP

102 lines
2.0 KiB
C++

#include <stdio.h>
#include <conio.h>
int digitos,baseini,basefinal,num,numfinal,tabla[80],tabla_bien[80];
int Pedir_Base();
int Pedir_Num(int baseini);
int BaseDiez_Base(int num,int basefinal);
int Transform(int num);
void Imprimir_tabla(int digitos);
void main() {
clrscr();
baseini=Pedir_Base();
num=Pedir_Num(baseini);
basefinal=Pedir_Base();
digitos=BaseDiez_Base(num,basefinal);
Imprimir_tabla(digitos);
printf("\nPulse una tecla para finalizar ...");
getch();
}
int Pedir_Base() {
int b;
do {
printf("\nIntroduce la Base: ");
fflush(stdin);
scanf("%d",&b);
} while (b<2 || b>16);
return(b);
}
int Pedir_Num(int baseini) {
int seguir=1,k=0,nuevo=0,numero;char n=0;
printf("Introduce un n£mero: ");
while (seguir) {
fflush(stdin); cscanf("%1c",&n);
if (n==13)
seguir=0;
else
k=Transform(n);
if (seguir)
if (k<baseini) {
numero=nuevo+k;
nuevo=numero*baseini;
}
else {
gotoxy(wherex()-1,wherey());
printf(" ");
gotoxy(wherex()-1,wherey());
}
}
return (numero);
}
int BaseDiez_Base(int num,int basefinal) {
int n=0,con=0,resto=0,pos=0,i=0,digitos=0;
n=num; con=0;
while (n!=0) {
resto=(n%basefinal);
n=(n/basefinal);
tabla[con]=resto;
printf("\n guardo en tabla[%d]=%d",con,resto);
digitos=con;
con++;
}
pos=0;i=(con-1);
for (i;i>=0;i--) {
tabla_bien[pos]=tabla[i];
printf("\ntablabien[%d]=%d",i,tabla_bien[pos]);
pos++;
}
return(digitos);
}
int Transform(int num) {
int k=0;
if (num>=48 && num <=57)
k=(num-48);
else
if (num>=65 && num <=70)
k=(num-55);
else
if (num>=97 && num <=102)
k=(num-87);
else
k=99;
return(k);
}
void Imprimir_tabla(int digitos) {
//printf("\n llegan digitos=%d\n",digitos);
printf("\nEl n£mero pedido es: ");
for (int i=0;i<=digitos;i++)
printf("%x",tabla_bien[i]);
}