domingo, 24 de mayo de 2015

CODIGO EN C++ PARA REALIZAR LA CONVERSION DE SISTEMAS NUMERICOS

         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