Hola a todos en este programa que nos dejo el Ing. Hector encargado en impartir la materia de Autómatas y Lenguajes Formales lo que hicimos fue convertir de una base n a otra base n, lo cual lo hicimos en c++ y que la base resultante se guardare en un archivo de texto.
código implementado para hacer las conversiones en c++
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
#include <fstream>
#include <string>
#include <iomanip>
using namespace std;
void arreglo (int numero [],
int digitos, int bx);
int convertirdecimal (int
numero [], int digitos, int bx, int by);
void convertirbase (int
decimal, int by);
int checabase ();
int checaby ();
int cont();
int conv();
void mostrarDatos();
void escribirEnArchivo();
void recuperarDeArchivo();
void salidaArchivo();
int main(int argc, char** argv)
{
int digitos = 0;
int bx, by;
int decimal;
cout <<
"----------------------------Convertidor------------------------------
\n\n";
bx = checabase ();
cout << "\n longitud del numero a
convertir \n\n "; // Cuantos digitos contendra el numero a
ingresar
cin >> digitos;
// Se almacenara la longitud del numero
int numero [digitos];
cout <<"\n
Introduce el numero a convertir, digito a digito\n\n";
arreglo (numero, digitos, bx);
decimal = convertirdecimal (numero, digitos,
bx, by);
by = checaby();
cout << "\n";
convertirbase
(decimal, by);
system
("PAUSE");
return 0; }
int checabase ()
{
int x; // se de clara variable en donde
se almacenara el numero a convertir
// Aqui se pide al usuario que ingrese el
numero que desea convertir a cualquier otra base
// Ingresando solamente el numero que se
muestra en frente de la frase
cout <<"En que base esta el numero
a convertir: \n ";
cout
<<"Decimal = 10 \n";
cout <<"Binario = 2 \n";
cout <<"Octal = 8\n";
cout <<"Hexadecimal = 16 \n \n
";
cin >> x; //
se almacena el numero ingresado
if(x >=17)
{
cout <<
"\n\n Ingrese una base menor a 16 para la conversion \n\n";
cout << "A que base
deseas convertir, ingresalo en numero: \n";
cout << "Decimal = 10
\n";
cout << "Binario = 2
\n";
cout << "Octal = 8
\n";
cout << "Hexadecimal =
16 \n \n ";
cin >> x;
}
if(x <=-1)
{
cout << "\n \n Ingrese una base
menor a 16 para la conversion \n\n";
cout << "A que
base deseas convertir, ingresalo en numero: \n";
cout << "Decimal = 10 \n";
cout << "Binario = 2
\n";
cout << "Octal = 8 \n";
cout << "Hexadecimal = 16 \n \n
";
cin
>> x;
}
return x;
}
int checaby ()
{
int x;
cout << "\n\n A que base deseas
convertir, ingresalo en numero: \n\n";
cout << "Decimal = 10 \n";
cout << "Binario = 2
\n";
cout << "Octal = 8\n";
cout << "Hexadecimal = 16 \n \n
";
cin >> x;
if(x >=17)
{
cout << "\n \n
Ingrese una base menor a 16 para la conversion \n\n";
cout <<
"A que base deseas convertir, ingresalo en numero: \n ";
cout << "Decimal = 10 \n";
cout << "Binario = 2
\n";
cout << "Octal = 8\n";
cout << "Hexadecimal = 16 \n \n
";
cin
>>x;
}
else if (x
<=-1)
{
cout << "\n \n Ingrese una base mayor para la conversion \n\n";
cout << "\n \n A que base deseas convertir, ingresalo en numero: \n
";
cout <<
"Decimal = 10 \n";
cout <<
"Binario = 2 \n";
cout <<
"Octal = 8\n";
cout <<
"Hexadecimal = 16 \n \n ";
cin
>>x;
}
return x;
}
void arreglo (int numero [],
int digitos, int bx)
{
int i,x, a;
for (i=0;
i<digitos; i++)
{
cout << "\n Introduce su numero \n", i+1;
cin
>>numero[i];
if
(numero[i]>=bx || numero[i]<0)
{
cout << "\n Su numero no es valido \n";
cout << "\n Introduce el digito \n", i+1;
cin >>numero[i];
}
}
cout << "\n
El numero a convertir es: \n\n";
for (i=0;
i<digitos; i++)
cout <<
numero [i];
}
int convertirdecimal (int
numero [], int digitos, int bx, int by)
{
int i, pot;
int x=0;
for (i=digitos-1,
pot=0; i>=0, pot<digitos; i--, pot++)
{
x+=
(pow(bx, pot)* numero[i]);
}
return x;
}
void convertirbase (int
decimal, int by)
{
int
cociente,residuo,cont, i,j;
int conv [50];
i=0;
do{
cociente = decimal/by;
residuo = decimal%by;
conv[i] = residuo;
decimal = cociente;
i+=1;
} while
(cociente>0);
cout <<
"\n El numero convertido es: \n";
ofstream
salidaArchivo("convertidorBases.txt",ios::out);
for (cont=i-1;
cont>=0; cont--)
{
cout << conv [cont];
salidaArchivo<<conv[cont];
}
cout
<<"\n\n";
}
PANTALLA DE SALIDA




0 comentarios :
Publicar un comentario