#include <iostream>
//Se incluye la clase Convertir para despues llamar a sus metodos
#include "Convertir.h"
using namespace std;
int main(void)
{
//Se crea un objeto de la clase Convertir (Instanciaciación)
Convertir *obj = new Convertir();
//se define una variable "n" de tipo entero
int n;
//Se pide que se digite el numero decimal
cout << "Digite numero decimal" << endl;
cout << ">> ";
//se guarda el digito en la variable "n"
cin >> n;
obj->setNum(n);//se encapsula la variable n
obj->contarDatos();//se llama al metodo contarDatos()
obj->crearVector();//se llama al metodo crearVector()
obj->toBinary();//se llama al metodo toBinary()
//se muestra el numero decimal
cout << "DEC " << obj->getNum() << endl;
//se muestra el texto "BIN" (BINARIO)
cout << "BIN ";
//se recorre el vector desde la posicion ultima hasta la primera
for(int i = obj->getTam(); i >= 0; i--)
{
//se muestra el valor en binario que haya en cada posicion (0 ó 1)
cout << obj->getDatos(i);
}
}
#ifndef CONVERTIR_H
#define CONVERTIR_H
class Convertir
{
public:
Convertir();
virtual ~Convertir();
//se definen los metodos publicos:
void contarDatos();//contarDatos() tendra la funcion de contar el tamaño del vector
void crearVector();//crearVector() se le asigna el tamaño que haya contado el metodo contarDatos()
void toBinary();//convertira a binario
//se definen los metodos Setters y Getters de la clase
void setNum(int n);
int getNum();
void setTam(int n);
int getTam();
void setDatos(int p, int n);
int getDatos(int p);
protected:
private:
//se definen los atributos privados de la clase
int num;//"num" de tipo entero
int tam;//"tam" de tipo entero
int *datos;//el vector *datos de tipo entero
};
#endif // CONVERTIR_H
#include "Convertir.h"
Convertir::Convertir()
{
//se definen los valores de 0 por defecto en el constructor de la clase
// a "num" y "tam"
num = 0;
tam = 0;
}
Convertir::~Convertir()
{
//dtor
}
//Implementacion del metoodo crearVector
void Convertir::crearVector()
{
//se crea una nueva instancia al vector "datos" y tendra un tamaño de "tam"
datos = new int[tam];
}
//Implementacion del metodo contarDatos
void Convertir::contarDatos()
{
//definimos una variable "aux" de tipo entero y se inicializa en "num"
int aux = num;
//se definen "pos" de tipo entero y se inicializa en 0, y "res"
int pos = 0, res;
//si el "num" que se digito es igual a 1 entonces:
if(num == 1)
{
//al setTam se le asignara 0 (sera la primera posicion del vector datos)
setTam(0);
}
else if(num == 0)//sino, si num es igual a 0 entonces:
{
//al setTam se le asignara 0 (sera la primera posicion del vector datos)
setTam(0);
}
else//sino
{
//haga esto:
do
{
//se le asigna el residuo de "aux" entre "2" a la variable "res"
res = aux%2;
//se incrementa pos
pos++;
//se le asigna la division de "aux" entre 2 a la variable "aux"
aux = aux / 2;
}
while(aux != 1);//mientras aux sea diferente de 1, repetira las instrucciones...
setTam(pos);//se le asigna a setTam, el valor de pos (sera la posicion del vector)
}
}
//Implementacion del metodo toBinary
void Convertir::toBinary()
{
//definimos una variable "aux" de tipo entero y se inicializa en "num"
int aux = num;
//se definen "pos" de tipo entero y se inicializa en 0, y "res"
int pos = 0, res;
//si el "num" que se digito es igual a 1 entonces:
if(aux == 1)
{
//se le asigna 1 en la posicion 0 del vector "datos"
datos[0] = 1;
}
else if(aux == 0)//sino, si num es igual a 0 entonces:
{
//se le asigna 1 en la posicion 0 del vector "datos"
datos[0] = 0;
}
else//sino
{
//haga esto:
do
{
//se le asigna el residuo de "aux" entre "2" a la variable "res"
res = aux%2;
//se le asigna el residuo "res" en la posicion "pos" del vector "datos"
datos[pos] = res;
//se incrementa pos
pos++;
//se le asigna la division de "aux" entre 2 a la variable "aux"
aux = aux / 2;
if(aux == 1)//si aux es igual a 1 entonces
{
//se le asigna 1, en la posicion "pos" del vector "datos"
datos[pos] = 1;
}
}
while(aux != 1);//mientras aux sea diferente de 1, repetira las instrucciones...
}
}
//Implementacion de los metodos Setters y Getters de los atributos de la clase...
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;
}