CENTRO UNIVERSITARIO UAEM
ATLACOMULCO
LICENCIATURA EN
INGENIERÍA EN COMPUTACIÓN
NOMBRE DEL DOCENTE:
INGENIERO.
HÉCTOR CABALLERO HERNÁNDEZ
NOMBRE MATERIA:
AUTÓMATAS Y LENGUAJES FORMALES
NOMBRE DE LA ALUMNA:
HEIVILINA PÉREZ ARIAS
GRUPO:
ICO-19
TURNO:
MATÚTINO
TRABAJO A ENTREGAR:
CODIGO EN C++ PARA REALIZAR LA
CONVERSION DE SISTEMAS NUMERICOS
FECHA DE ENTREGA:
MAYO DE 2015.
CODIGO EN
C++ PARA REALIZAR LA CONVERSION DE SISTEMAS NUMERICOS
#include
<iostream>
#include
<conio.h>
#include
<math.h>
#include
<stdio.h>
#include
<stdlib.h>
#include
<fstream>
FILE *doc;
using
namespace std;
void
pedirDatos(int num[],int numero,int baseInicial);
int
conversor(int num[],int numero,int baseInicial,int baseFinal);
void conversorBase(int
decimal,int baseFinal);
int
revisaBase();
int
revisabaseFinal();
int main(int
argc, char** argv) {
doc
= fopen ("Resultados.txt","a+");
int r;
do{
r=1;
int numero=0;
int
baseInicial,baseFinal;
int decimal;
system("Title
CONVERSOR DE BASES");
cout<<"\t\tCentro
Universitario UAEM Atlacomulo"<<endl;
cout<<endl;
cout<<"Integrantes:"<<endl;
cout<<"--->Heivilina
Perez Arias"<<endl;
cout<<"--->Mayte
Ricardo Cruz"<<endl;
cout<<endl;
cout<<"\t\t\tPROGRAMA
CONVERSOR DE BASE A BASE"<<endl;
cout<<"\t\t\t(Binaria,Octal,Decimal
y Hexadecimal)"<<endl;
cout<<endl;
baseInicial=revisaBase();
cout<<"Digitos
del numero al convertir:"<<endl;
cin>>numero;
int num[numero];
cout<<"Ingresa
el numero a convertir(Nota:Inserta cada numero por separado):";
pedirDatos(num,numero,baseInicial);
decimal=conversor(num,numero,baseInicial,baseFinal);
baseFinal=revisabaseFinal();
cout<<endl;
conversorBase(decimal,baseFinal);
}while(r!=2);
return 0;
}
int revisaBase(){
int a;
cout<<"Base del
numero ingresado:"<<endl;
cin>>a;
if (a>=17)
{
cout<<"La
base maxima a convertir es de 16,vuelve a ingresar la base:"<<endl;
cout<<"Base
del numero ingresado: ";
cin>>a;
return a;
}
if(a<=-1)
{
cout<<"El
numero ingresado es menor a la minima base a convertir,vuelve a ingresar la
base"<<endl;
cout<<"Base
del numero ingresado: ";
cin>>a;
}
return a;
}
int
revisabaseFinal ()
{
int
a;
cout<<"Base
a la que se desea convertir el numero ingresado:";
cin>>a;
fprintf(doc,
"\nConvertido a la base: %d",a);
if
(a>=17)
{
cout<<"La base maxima a
convertir es de 16,vuelve a ingresar la base:"<<endl;
cout<<"Base
a la que se desea convertir el numero ingresado:"<<endl;
cin>>a;
return a;
}
if(a<=-1)
{
cout<<"El
numero ingresado es menor a la minima base a convertir,vuelve a ingresar la
base"<<endl;
cout<<"Base
a la que se desea convertir el numero ingresado: ";
cin>>a;
}
return a;
}
void
pedirDatos(int num[],int numero, int baseInicial)
{
int i,a,b;
fprintf(doc, "\nMi numero
es:");
for(i=0;i<numero; i++)
{
cout<<"Ingresa
el digito numero ["<<i+1<<"]:"<<endl;
cin>>num[i];
fprintf(doc,
"%d",num[i]);
if (num[i]>=baseInicial || num[i]<0)
{
cout
<<"Numero no valido para esta base";
cout <<"Introduce el digito
numero "<<i+1;
cin>>num[i];
}
}
cout<<"El
numero que se quiere convertir es:"<<endl;
cout<<endl;
for
(i=0; i<numero; i++)
cout<<num[i];
cout<<endl;
}
int conversor(int num[],int numero,int
baseInicial,int baseFinal)
{
int
i, pot;
int x=0;
for (i=numero-1, pot=0; i>=0,
pot<numero; i--, pot++)
{
x+= (pow(baseInicial, pot)*
num[i]);
}
return x;
}
void
conversorBase(int decimal,int baseFinal)
{
int cociente,residuo,cont, i,j;
int conv [50];
i=0;
do{
cociente = decimal/baseFinal;
residuo = decimal%baseFinal;
conv[i] = residuo;
decimal = cociente;
i+=1;
}while (cociente>0);
fprintf(doc,"\nLa conversion es:");
cout<<"La conversion
es:";
for (cont=i-1; cont>=0; cont--) {
printf("%x", conv [cont]);
fprintf(doc,"%x",conv[cont]);
}
fprintf(doc,
"\n_________________________________");
getch();
system("cls");
}
No hay comentarios:
Publicar un comentario