Este código implementa un programa para convertir números entre diferentes bases numéricas. Primero solicita la base del número a convertir y los dígitos de este. Luego llena un arreglo con los dígitos introducidos y calcula el equivalente en decimal. Más adelante pide la base a la que se desea convertir y realiza la conversión imprimiendo el resultado. El programa incluye funciones para validar las bases, llenar el arreglo, hacer las conversiones y escribir el resultado en un archivo de texto.
1. CÓDIGO
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
#include <iomanip>
#include <iostream>
#include <fstream>
#include <string>
#include <cstdlib>
void llenaArreglo (int num [], int digitos, int base1);
int convertirAdecimal (int num [], int digitos, int base1, int base2);
void convertirAbase (int decimal, int base2);
int checabase ();
int checabase2 ();
int cont ();
int conv ();
void mostrarDatos();
void escribirEnArchivo ();
void recuperarDeArchivo();
void salidaArcgivo ();
int main()
{
int digitos = 0;
int base1, base2;
int decimal;
system ("COLOR F3");
printf (" * * * ***** *** ** ** * ***** * *****n"
" ** * * * * * * * * * ** * ** *n"
" * * * * * * * * ** * * * * * * *n"
" * * * * * * * * ** * * * * * * *****n"
" ******** * * * * * * * ******** * ******** *n"
" * * * * * * * * * * * * * * *n"
" * * ****** * *** * * * * * * * *****");
printf ("nn");
printf ("ttt <<CONVERSION DE BASES>>nn");
base1 = checabase ();
printf ("n De cuantos digitos es el numero a convertir: ");
scanf ("%d", &digitos);
int num [digitos];
printf ("n Introduce el numero a convertir (digito por digito)n");
llenaArreglo (num, digitos, base1);
decimal = convertirAdecimal (num, digitos, base1, base2);
base2 = checabase2();
printf ("n");
convertirAbase (decimal, base2);
system ("PAUSE");
return 0;
}
int checabase ()
{
int x;
printf (" Base del numero a convertir (numero): ");
scanf ("%d", &x);
2. if(x >=17)
{
printf("nn El numero insertado no se puede convertir"
"por favor ingrese otra base: ");
printf (" Base del numero a convertir (numero): ");
scanf ("%d", &x);
}
if(x <=-1)
{
printf("nn El numero insertado no se puede convertir"
"por favor ingrese otra base: ");
printf (" Base del numero a convertir (numero): ");
scanf ("%d", &x);
}
return x;
}
int checabase2 ()
{
int x;
printf ("nn A que base lo desea convertir (numero): ");
scanf ("%d", &x);
if(x >=17)
{
printf("nn El numero insertado no se puede convertir"
"por favor ingrese otra base: ");
printf ("nn A que base lo desea convertir (numero): ");
scanf ("%d", &x);
}
if(x <=-1)
{
printf("nn El numero insertado no se puede convertir"
"por favor ingrese otra base: ");
printf ("nn A que base lo desea convertir (numero): ");
scanf ("%d", &x);
}
return x;
}
void llenaArreglo (int num [], int digitos, int base1)
{
int i,x, a;
for (i=0; i<digitos; i++)
{
printf ("n Introduce el digito %d: ", i+1);
scanf("%x", &num[i]);
if (num[i]>=base1 || num[i]<0)
{
printf ("nt =>EL NUMERO NO ES VALIDO PARA ESTA BASE<=n");
printf ("n Introduce el numero %d: ", i+1);
scanf("%x", &num[i]);
}
}
system("cls");
printf ("n El numero a convertir es: ");
for (i=0; i<digitos; i++)
printf ("%x", num [i]);
}
int convertirAdecimal (int num [], int digitos, int base1, int base2)
{
int i, pot;
int x=0;
for (i=digitos-1, pot=0; i>=0, pot<digitos; i--, pot++)
{
x+= (pow(base1, pot)* num[i]);
}
3. return x;
}
void convertirAbase (int decimal, int base2)
{
int cociente,residuo,cont, i,j;
int conv [50];
i=0;
do{
cociente = decimal/base2;
residuo = decimal%base2;
conv[i] = residuo;
decimal = cociente;
i+=1;
}while (cociente>0);
printf("ttLA CONVERSION ES IGUAL A: ");
ofstream salidaArchivo("convertidorbases.txt",ios::out);
for (cont=i-1; cont>=0; cont--)
{
printf("%x", conv [cont]);
salidaArchivo<<endl <<conv[cont];
}
printf("nn");
//<<INTEGRANTES>>
//MARICARMEN CAMPOS PASCUAL
//ALETVIA JACQUELINE LEON VENEGAS
}