#include <iostream>
#include "Convertir.h"
using namespace std;
int main(void)
{
Convertir *obj = new Convertir();
int n;
cout << "Digite numero decimal" << endl;
cout << ">> ";
cin >> n;
obj->setNum(n);
obj->contarDatos();
obj->crearVector();
obj->toBinary();
cout << "DEC " << obj->getNum() << endl;
cout << "BIN ";
for(int i = obj->getTam(); i >= 0; i--)
{
cout << obj->getDatos(i);
}
}
#ifndef CONVERTIR_H
#define CONVERTIR_H
class Convertir
{
public:
Convertir();
virtual ~Convertir();
void contarDatos();
void crearVector();
void toBinary();
void setNum(int n);
int getNum();
void setTam(int n);
int getTam();
void setDatos(int p, int n);
int getDatos(int p);
protected:
private:
int num;
int tam;
int *datos;
};
#endif
#include "Convertir.h"
Convertir::Convertir()
{
num = 0;
tam = 0;
}
Convertir::~Convertir()
{
}
void Convertir::crearVector()
{
datos = new int[tam];
}
void Convertir::contarDatos()
{
int aux = num;
int pos = 0, res;
if(num == 1)
{
setTam(0);
}
else if(num == 0)
{
setTam(0);
}
else
{
do
{
res = aux%2;
pos++;
aux = aux / 2;
}
while(aux != 1);
setTam(pos);
}
}
void Convertir::toBinary()
{
int aux = num;
int pos = 0, res;
if(aux == 1)
{
datos[0] = 1;
}
else if(aux == 0)
{
datos[0] = 0;
}
else
{
do
{
res = aux%2;
datos[pos] = res;
pos++;
aux = aux / 2;
if(aux == 1)
{
datos[pos] = 1;
}
}
while(aux != 1);
}
}
void Convertir::setNum(int n)
{
num = n;
}
int Convertir::getNum()
{
return num;
}
void Convertir::setDatos(int p, int n)
{
datos[p] = n;
}
int Convertir::getDatos(int p)
{
return datos[p];
}
void Convertir::setTam(int n)
{
tam = n;
}
int Convertir::getTam()
{
return tam;
}