102 lines
2.0 KiB
C
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]);
|
|
|
|
}
|