Ingenierìa En Computaciòn

Ingenierìa En Computaciòn
UAEM

martes, 26 de mayo de 2015

PROGRAMA: "Conversor de bases (binario,octal,decimal,hexadecimal)"




#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:"<<"\t";
          cin>>numero;
          int num[numero];
          cout<<"Ingresa el numero a convertir(Nota:Inserta cada numero por separado):"<<"\t\t";

    
          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:"<<"\t";
     cin>>a;
     if (a>=17)
      {
          cout<<"La base maxima a convertir es de 16,vuelve a ingresar la base:"<<"\t";
          cout<<"Base del numero ingresado: "<<"\t";
          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: "<<"\t";
          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<<"]:"<<"\t";
     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");}
PROGRAMA COMPILADO





No hay comentarios:

Publicar un comentario