Hola amigos:
Llevo años programando pero vengo de otros lenguajes y aqui tengo algun problemita que ya me tiene aburrido
Basicamente es conceptual..... intento mezclar una "cola" que tiene cartas con una idea que tuve de crear otra (doble) e insertar en esta segunda arriba o abajo segun tiro un dado.
La cuestion es que no mezcla nada!!!
Se que la mas facil es crear un vector y aplicarle un shuffle() pero quisiera saber si fuera posible QUE estoy haciendo mal......
Como creo voy a actualizar el codigo que tengo publicado en
otro hilo....... lo dejo como referencia del codigo global pero el metodo mezclar() actual (que no funciona) lo coloco aqui:
Código C++:
Ver originalvoid mezclar()
{
Baraja carta;
int up_down;
std::deque<Baraja> nuevo_mazo;
// copio el mazo
for (int i=0;i<54;i++)
{
carta = cartas.front();
cartas.pop();
nuevo_mazo.push_front(carta);
}
for (int i=0;i<1000;i++)
{
// decido si coloco la carta arriba o abajo (cada vez)
// saco siempre del mismo lado
carta = nuevo_mazo.front();
nuevo_mazo.pop_front();
if (up_down==0){
nuevo_mazo.push_front(carta);
//cout << "arriba\n";
}
else{
nuevo_mazo.push_back(carta);
//cout << "abajo\n";
}
}
// lo copio al mazo original
for (int i=0;i<54;i++)
{
carta = nuevo_mazo.front();
nuevo_mazo.pop_front();
cartas.push(carta);
}
};
OBVIAMENTE... como sigue SI funciona...... aunque quisiera ENTENDER porque de la primera forma no
Código C++:
Ver original// SI funciona bien usando vectores
void mezclar()
{
Baraja carta;
vector<Baraja> nuevo_mazo (54);
int up_down;
// copio el mazo
for (int i=0;i<54;i++)
{
carta = cartas.front();
cartas.pop();
nuevo_mazo.at(i) = carta;
}
random_shuffle (nuevo_mazo.begin(), nuevo_mazo.end());
// lo copio al mazo original
for (int i=0;i<54;i++)
{
carta = nuevo_mazo.at(i);
cartas.push(carta);
}
};
Dejo entonces referencia al resto del codigo del
otro hilo
GRACIAS!