/* =============================================================================================
Wilfredo Cruz Yarlequé wcruzy@gmail.com
Piura, Perú, Diciembre 03 de 2024
=============================================================================================
Convierte valor entero entre 0 y 65535 a base 8, base 16 o base 24
============================================================================================= */
#include <stdio.h>
#include <math.h>
int validanumero (int);
int validabase (int);
void convierte (int, int);
char letra (int);
void main()
{
int b=0;
int n=0;
do
{
printf("\nIngrese valor: ");
scanf("%d", &n);
} while (! validanumero (n));
do
{
printf("\nIngrese base : ");
scanf("%d", &b);
} while (! validabase (b));
convierte(n, b);
}
int validanumero(int nume)
{
if (nume < 0 || nume > 65535)
return 0;
else
return 1;
}
int validabase(int bas)
{
if (bas == 8 || bas == 16 || bas == 24)
return 1;
else
return 0;
}
void convierte(int numero, int base)
{
int a[10];
int i;
int j;
i=0;
do
{
a[i] = numero % base;
i++;
numero = numero / base;
} while (numero >= base);
a[i]=numero;
printf("\nValor convertido: ");
for(j = i; j >= 0; j--)
if (a[j] <= 9)
printf("%d", a[j]);
else
printf("%c", letra(a[j]));
printf("\n");
}
char letra (int x)
{
char caracter[14] = {'A','B','C','D','E','F','G','H','I','J','K','L','M','N'};
char letra;
letra = caracter[x - 10];
return letra;
}