Laboratorio Número 13: Estructura de datos Cola Abril 23 de 2013

Anuncio
Cali
Laboratorio Número 13:
Estructura de datos Cola
Abril 23 de 2013
1.
Calentamiento (60’)
Como calentamiento previo a la tarea de hoy realizaremos la implementación de colas
(Queues) en C. Cabe recordar las operaciones sobre colas; init(queue) que inicializa la cola;
enqueue(queue, val) que agrega un valor a la cola; dequeue(queue) que devuelve el valor
de la cabeza de la cola; empty(queue) que retorna True si la cola está vacı́a. Sabiendo esto
implemente:
Estructura cola usando un array para almacenar los datos.
Estructura cola usando 2 pilas para almacenar datos.
Debe implementar dichas estructuras en un solo programa y mostrar su funcionamiento
con datos.
10.
(Solucion con colas 90’)
En el juego de cartas para niños Guerra, un mazo de 52 cartas es repartido aleatoriamente
entre dos jugadores. De tal forma que cada jugador participa con 26 cartas. Los jugadores
no miran nunca sus cartas, las tienen en una pila boca abajo. El objetivo del juego es ganar
todas las cartas.
1
Laboratorio de programación
Estructura de datos Cola
Los jugadores juegan un turno tomando la carta que está al tope de su mazo y poniendola
sobre la mesa al mismo tiempo. El jugador que saque la carta con mayor valor se lleva las
dos cartas. Éstas cartas son puestas en la parte inferior del mazo del ganador. Las cartas
son valoradas como es usual: A, K, Q, J, 10, 9, 8, 7, 6, 5, 4, 3, 2. Las pintas de las
cartas son ignoradas. Los jugadores continuan jugando hasta que uno de ellos tome todas las
cartas.
Cuando los jugadores sacan la misma carta, se entra a la Guerra. Esas dos cartas quedan
en la mesa. Los jugadores proceden a tomar la siguiente carta de sus respectivos mazos y la
ponen boca abajo sobre la mesa. Luego toman otra carta del mazo y la ponen boca arriba. El
que saque la mayor de estas últimas toma las 6 cartas que están sobre la mesa. Si las nuevas
cartas quedan en empate, el proceso continúa hasta que se desempate el juego. Entonces el
jugador ganador tomará todas las cartas en la mesa y las pondrá al final de su mazo.
Si alguno de los jugadores se queda sin cartas en cualquier punto del juego, el otro jugador
gana inmediatamente. Las cartas para el ganador debe ponerse en el orden exacto en el que se
pusieron en la mesa: primera carta del jugador 1, primera carta del jugador 2, segunda carta
del jugador 1, etc.
Como lo sabe cualquier niño que conoce el juego, una partida puede durar bastante tiempo.
La pregunta es: ¿cuanto tiempo? Su trabajo es implementar un programa que simule el juego
y reporte el número de movidas hechas.
La entrada para el programa consiste en varias lı́neas que vienen en pares. La primer lı́nea
son las cartas del jugador 1 y la segunda para el jugador 2. Un ejemplo de entrada serı́a
4d
8d
6d
9h
Ah
2h
Ks
8c
9d
Qd
As
8h
As
9c
8c
Qs
4c
7s
4h
7c
4s
9s
3s
2c
Jh
5d
Kc
Ac
7d
5d
6h
4c
7c
8h
Jc
7c
Jd
Js
4d
Td
5h
2d
Qs
Qc
Tc
Jc
8s
Tc
Qh
5s
Kd
7s
Qc
Jh
6s
Ts
3s
2d
Kh
Ac
6c
Jc
5h
6s
Td
9s
2c
Ad
2h
As
3h
9c
Kc
7d
Ks
4h
5c
5s
4s
Kh
5c
Ts
9h
Qd
Ah
Tc
2s
6h
8c
4s
3h
3s
Qh
2c
Qs
Js
Qd
8s
8d
Kh
3d
6d
2h
2d
7d
Th
Ks
Kc
7s
2s
3d
7h
4d
2s
9s
5h
Ah
5s
Kd
Th
3c
6d
Js
9c
6c
8d
8h
Ac
Jd
5d
6s
9d
Kd
5c
4c
Ad
7h
4h
7h
9h
Jh
3h
Qh
Ad
Th
3d
6c
8s
3c
6h
Td
9d
Qc
3c
Jd
Ts
La simulación incluye que se imprima todas las cartas que van sacando los jugadores.
La salida, el número de movimientos hechos en el juego, debe escribirse en archivos. Utilice
selectores de archivos para obtener la entrada y la salida.
11.
Entrega
Una vez finalice su implementación comprima la carpeta en un archivo con el nombre
laboratorio13.tar.gz. Debe entregar el paquete a mas tardar el martes 30 de abril a las
10.30am usando el sistema moodle.
23 de abril de 2013
Página 2 de 2
Descargar