Hola mi intención es hacer un programa que a partir de diferentes booleanos pueda tener la deficinción de un concepto. Esto lo pienso hacer con varios vectores de booleanos, mi pregunta és si se puede pasar de un vector de booleanos a un integer facilmente y videversa.
Por ejemplo: si yo tengo: [1][0][1] en un vector de booleanos que me salga 5 i al inversa que si pongo 5 me salga un vector de booleanos con [1][0][1]
struct concepte {
string palabra;
bool Vfrase = false;
bool Significado=false;
};
En C++: Algo así?
string toBool(int);
bool *v; //vector
int n = 5; //numero
string s = toBool(n);
v = new bool[s.length()]; //el tamaño del vector será del tamaño del string.
for(int i=0;i<s.length();i++)
v[i] = s[i];
Ok, el código lo adaptarías tú. La función toBool() recibiría por valor un int (o unsigned int, o lo que quieras), y retornaría un string que será el número en binario
Ejemplo: toBool(6) retorna la string: "110".
Esto es un ejemplo, para darte una idea. Si usas C, tendrías que cambiar algunas cosas, como lo de string, y lo de "new".
Si no era lo que buscabas, postea con más exactitud lo que buscas.
Suerte.
Si gracias és esto. lo que no entiendo de este codigo la función new bool i el asterisco. Asterisco es para hacer vectores ed tamaño indefinido no?
Tambien necessitaria el programa inverso.
Fail. Ahora vuelvo a responder.
¿Sabes cómo se pasa un decimal a binario y viceversa? Eso es lo que tiene que hacer tu función.
El asterisco significa que la variable es un puntero.
New es para alojar memoria dinámica.
Repasa un poco esos conceptos, que son muy importantes. (O pregúntale a tu profesor, si tuvieses)
Olvídate del código que te puse. Estuve repasandolo, y no está todo lo optimizado que puede. Tú lo que buscas, es la función "toBool" (O como la quieras llamar)
Sin mirarme librerías ni nada, te lo puedes hacer tu mismo fácilmente.
int Convertiraentero(vector<bool> &dato)
{
int numero = 0;
int multiplicador = 1;
for (int i = dato.size()-1; i >=0;i--)
{
numero += (dato[i]*multiplicador);
multiplicador *= 2;
}
return numero;
}
Suponiendo que el vector simboliza un número binario natural y está ordenado de mayor a menor.
Una forma ligeramente distinta de implementar la función es:
int Convertiraentero(vector<bool>& dato)
{
int rv = 0;
for (vector<bool>::size_type i = 0; i < dato.size(); i++)
rv = rv * 2 + dato[i];
return rv;
}
Un saludo