Les dejo el código, Espero respuestas Saludos!
PD: por ahora solo maneja de binario a decimal, de binario a BCO y de decimal a binario
main.cpp
Código
BaseABase.h
#include <iostream> using std::cin; using std::cout; using std::endl; #include <cmath> using std::pow; #include "BaseABase.h" int main() { //CREACION DEL OBJETO APLICACION BaseABase aplicacion; //MENU int opcion=0; int numero; int base; cout <<"Menu: Que tipo de numero desea convertir?\a" <<endl <<endl <<"1 - Binario" <<endl <<"2 - Decimal" <<endl <<endl <<endl <<"salir: -1" <<endl <<"opcion: "; cin >> opcion; while (opcion != -1) { switch (opcion) { ////BINARIO case 1: system("cls"); cout <<"\aSeleccione la base: \n\n" <<"1 - Decimal" <<endl <<"2 - BCO" <<endl <<endl <<endl <<"Menu Principal: -1 " <<endl <<"opcion: "; cin >> base; while ( base != -1) { system("cls"); switch (base) { case 1: cout <<"Numero: "; cin >> numero; aplicacion.convertirBinarioADecimal(numero); cout <<"convert: " <<aplicacion.obtenerDecimal() <<endl; base= -1; cin.get(); cin.get(); system("cls"); break; case 2: system("cls"); cout <<"Numero: "; cin >> numero; aplicacion.convertirBinarioABCO(numero); cout <<"convert: " <<aplicacion.obtenerBCO() <<endl; base= -1; cin.get(); cin.get(); system("cls"); break; } } break; // DECIMAL case 2: system("cls"); cout <<"\aSeleccione la base: \n\n" <<"1 - Binario" <<endl <<endl <<endl <<"Menu Principal: -1 " <<endl <<"opcion: "; cin >> base; while ( base != -1) { system("cls"); switch (base) { case 1: cout <<"Numeroa: "; cin >> numero; aplicacion.convertirDecimalABinario(numero); cout <<"convert: " <<aplicacion.obtenerBinario() <<endl; base= -1; cin.get(); cin.get(); system("cls"); break; } } break; } // RESTAURACION DE VALORES! aplicacion.restaurarValores(); system("cls"); cout <<"Menu: Que tipo de numero desea convertir?\a" <<endl <<endl <<"1 - Binario" <<endl <<"2 - Decimal" <<endl <<endl <<endl <<"salir: -1" <<endl <<"opcion: "; cin >> opcion; } cin.get(); cin.get(); return 0; }
Código
BaseABase.cpp
/* ATENCION: luego de usar las funciones obtener se debe ejecutar la funcion restaurarValores! */ #include <string> using std::string; class BaseABase { public: //Constructor BaseABase(); //funciones convertir void convertirBinarioADecimal(int); void convertirDecimalABinario(int); void convertirBinarioABCO(int); //funciones obtener long int obtenerBinario(); long int obtenerDecimal(); string obtenerBCO(); //funciones restaurar void restaurarValores(); private: long int binario; long int decimal; string BCO; };
Código
#include <iostream> using std::cin; using std::endl; using std::cout; #include <cmath> using std::pow; #include "BaseABase.h" BaseABase::BaseABase() { restaurarValores(); } //Funciones convertir void BaseABase::convertirBinarioADecimal(int numero) { long int auxBinario; int resto; binario= numero; auxBinario= numero; for (int contador=0; pow(10.,contador) <= binario; contador++) { resto= auxBinario % 10; auxBinario/= 10; switch (resto) { case 0: decimal+= (resto * pow(2.0,contador)); break; case 1: decimal+= (resto * pow(2.0,contador)); break; } } } //FIN FUNCION CONVERTIR BINARIO A DECIMAL void BaseABase::convertirDecimalABinario(int numero) { int restoDivision=0; int unidadDivision=0; int iteracionBinaria=0; unidadDivision= numero; while (unidadDivision > 0) { restoDivision= unidadDivision % 2; unidadDivision= unidadDivision / 2; binario+= restoDivision * pow (10.,iteracionBinaria); ++iteracionBinaria; if (numero == 2) { binario+= unidadDivision * pow (10.,iteracionBinaria); } } } void BaseABase::convertirBinarioABCO(int numero) { convertirBinarioADecimal(numero); int digitos= 1; int digito; int auxNumero= decimal; while ((auxNumero / 10) != 0) { auxNumero/= 10; digitos++; } int divisor= pow(10.,digitos-1); for (int i=1; i <= digitos;i++) { digito= decimal / divisor; decimal%= divisor; switch (digito) { case 0: BCO+= " 000"; break; case 1: BCO+= " 001"; break; case 2: BCO+= " 010"; break; case 3: BCO+= " 011"; break; case 4: BCO+= " 100"; break; case 5: BCO+= " 101"; break; case 6: BCO+= " 110"; break; case 7: BCO+= " 111"; break; } divisor/= 10; } } //funciones obtener long int BaseABase::obtenerBinario() { return binario; } long int BaseABase::obtenerDecimal() { return decimal; } string BaseABase::obtenerBCO() { return BCO; } //funciones restaurar void BaseABase::restaurarValores() { binario= 0; decimal= 0; BCO= " "; }