Adsence

miércoles, 20 de abril de 2011

Colas

Leave a Comment
Simplemente muestra como se crean las colas en C, y el uso de clases,
Aclaro que no quedo 100% bien, peusto de que yo no vi programacion orientada a objetos con C++, si alguien tiene alguna sugerencia para que este codigo quede MAS ORIENTADO A OBJETOS quebara bien recibida//Codigo de Colas en C++
//Simulara una baraja de cartas, y las revolvera

#include < iostream.h >
//esta libreria la incluyo para revolver la baraja
#include < time.h >
class Cola{
private:
struct Nodo{
int valor;
int fig;
struct Nodo* siguiente; // coloca el nodo en la segunda posición
}* primero;
struct Nodo* ultimo;
unsigned int elementos;
public:
Cola(){
elementos = 0;
}
~Cola(){
while (elementos != 0) pop();
}
struct Nodo *newNodo()
{
Nodo * aux=new Nodo;
return aux;
}
void push(int val,int f){
Nodo* aux = new Nodo;
aux- >valor = val;
aux- >fig = f;
if (elementos == 0) primero = aux;
else ultimo- >siguiente = aux;
ultimo = aux;
++elementos;
}

void pop(){
Nodo* aux = primero;
primero = primero- >siguiente;
delete aux;
--elementos;
}

bool vacia() const{
return elementos == 0;
}
int size(){
return elementos;
}
void head(int val,int f){
Nodo *aux2=primero;
//cout< < "Me llego:\n";
//cout< < "Val: "< < val< < "\t F: "< < f< < "\n";
for(int i=0;i< 52;i++)
{
if(val==aux2- >valor && f==aux2- >fig)
{

/*cout< < "Quedo Aux2:\n";
cout< < "V1: "< < v1< < "\t F1: "< < v1< < "\n";
cout< < "Quedo Primero:\n";
cout< < "Val: "< < val< < "\t F: "< < f< < "\n";
*/
}
aux2=aux2- >siguiente;
}
free(aux2);
}
void revolver()
{
int hora = time(NULL),numero,val,f,aux=0,c=0;
srand(hora);
while(c< 100)
{
Nodo *aux2=primero;
numero=rand()%50;
//cout< < "Primero numero para aleaotrio:"< < numero< < "\n";
while(aux< numero)
{
aux2=aux2- >siguiente;
aux++;
//cout< < "Valor "< < c< < " de aux:"< < aux< < ":\n";
}
if(aux2!=NULL)
{
val=aux2- >valor;
f=aux2- >fig;
int v1,f1;
v1=primero- >valor;
f1=primero- >fig;
primero- >valor=val;
primero- >fig=f;
aux2- >valor=v1;
aux2- >fig=f1;
//cout< < "Val: "< < val< < "\t f:"< < f< < "\n";
//cout< < "V1: "< < v1< < "\t f1:"< < f1< < "\n";
}
//free(aux2);
aux=0;
c++;

}

}
void consultar(int v,int f)
{
//cout< < "Me llego para mostrar:\n";
//cout< < "Val: "< < v< < "\t F: "< < f< < "\n";
switch(v)
{
case 11:
cout< < "As \t";
break;
case 12:
cout< < "J \t";
break;
case 13:
cout< < "Q \t";
break;
case 14:
cout< < "K \t";
break;
default:
cout< < v< < "\t";
break;
}switch(f)
{
case 1:
cout< < "Corazones \n";
break;
case 2:
cout< < "Diamantes \n";
break;
case 3:
cout< < "Trebol \n";
break;
case 4:
cout< < "Picas \n";
break;

}
}
void monstar()
{
Nodo *aux=primero;
do
{
consultar(aux- >valor,aux- >fig);
aux=aux- >siguiente;
}while(aux!=NULL);

}

};
class BlackJack
{


public:
Cola baraja;
BlackJack()
{
baraja=Cola();
llenar();

}


void llenar()
{
for(int i=1;i< =14;i++)
{
for(int j=1;j< =4;j++)
{

baraja.push(i,j);
}

}
}



};
main()
{
BlackJack Juego=BlackJack();
int r;
do
{
cout< < "Casino Jamper91.hostei.com\n";
cout< < "1.Mostrar Baraja\n";
cout< < "2.Revolver Baraja\n";
cout< < "3.Salir\n";
cout< < "Escoje:";
cin > >r;
switch(r)
{
case 1:
Juego.baraja.monstar();
break;
case 2:
Juego.baraja.revolver();
break;
}
}while(r!=3);
system("PAUSE");
}

0 comentarios :