Sei sulla pagina 1di 4

Lenguajes de Programacion

Tarea Semestral
Javier Vidal Valenzuela
June 1, 2016

Introducci
on
El prop
osito de esta tarea es familiarizarse con el lenguaje de programacion C y el trabajo en equipo desarrollando
programas computacionales de mediana a alta complejidad.
El trabajo debe ser realizado en grupos de 4 o 5 alumnos, quedando absolutamente prohibido el trabajo
individual. .
Este enunciado se entregar
a por correo electronico, a traves de la plataforma INFODA y a traves del grupo
Facebook del curso y en el caso de requerir aclaracion de alguno de los aspectos expuestos en el documento,
se recomienda que la comunicaci
on se haga electronicamente, de preferencia usando Facebook, para hacer
extensivas las explicaciones al resto del curso.
Este problema corresponde a una adaptacion de un problema usado en las Olimpiadas de Programaci
on de
la ACM.

El psquico jugador de POKER


El POKER es un juego de azar con uso cartas cuyo origen se remonta a aproximadamente 1829 en New Orleans,
USA.
El POKER se juega con un mazo de 52 cartas, repartidas en 4 pintas de 13 cartas cada pinta. Las pintas
son coraz
on, trebol, diamante y pica. Las cartas de cada pinta estan enumeradas con A (as), 2, 3, 4, 5, 6, 7, 8,
9, 10, J (jota), Q (reina) y K (rey).

En el juego del POKER, cada jugador recibe una mano de 5 cartas (las cuales pueden ser vistas solo por
el jugador al que pertenece la mano). Luego, cada uno de los jugadores puede descartar entre cero y cinco de
sus cartas, las cuales deben ser sustituidas por el mismo n
umero de cartas descartadas tomando nuevas cartas
desde la parte superior del mazo (el cual est
a boca abajo). El objetivo del juego es maximizar el valor de la
mano final. La escala de valores de las manos se presenta al final de la descripcion del problema.
Normalmente, un jugador no puede ver las cartas de la baraja y por tanto debe usar el azar para decidir que
cartas descartar. En este problema, nos imaginaremos que uno de los jugadores es psquico y sabe que cartas
est
an en la parte superior del mazo.
Entonces, se pide escribir un programa en lenguaje de programacion C que informe al jugador psquico que
cartas debe descartar con el fin de maximizar el valor de su mano.

Lenguajes de Programaci
on

503201

Entradas y Salidas
La entrada del programa consistir
a en una serie de lneas, cada una conteniendo las cinco cartas repartidas al
jugador psquico m
as las 5 cartas del tope del mazo.
Cada carta es representada por un c
odigo de dos smbolos, el primero que indica el n
umero de la carta y el
segundo la pinta.
Se considerar
a los siguientes smbolos para cada n
umero: A (as), 2 al 9 (mismo smbolo), 0 (10), J (jota), Q
(reina) y K (rey); y los siguientes smbolos para las pintas: C (corazon), T (trebol), D (diamante) y P (pica).
Las cartas en una lnea est
an separadas por un espacio y no es necesario revisar si la entrada es valida, esto
es, identificar que las cartas son correctas y no estan duplicadas.
Cada lnea de entrada debe producir una lnea de salida, consistente en la mano inicial del jugador psquico
y la mejor mano posible al hacer los descartes adecuados.
La entrada termina cuando encuentre un smbolo fin de archivo (EOF).
A continuaci
on se muestra un ejemplo de lneas de entrada y las salidas que su programa debera producir
usando estas combinaciones de cartas, u
selas como referencia para construir su programa. Notar que el orden
de las cartas en la mano del jugador es irrelevante pero el orden de las cartas en el mazo si lo es debido a que
las cartas descartadas ser
an reemplazadas por cartas al tope del mazo.
Tambien notar que en los ejemplos se presenta todos los valores finales de las manos en orden descendente.

Ejemplos
0C
2C
2C
2C
AT
KP
AC
6T
3D

de entrada:
JC QT QD
2P
3C
3P
2P
3C
3P
AD 5C AT
2D 9T
3P
AC 2C 3T
6T
9P AD
9T 8T 2D
5P
2C QD

QP
3T
3T
7C
KD
JC
8T
7T
0D

QC
2D
2D
AC
5P
KT
QC
2C
6P

KC
3D
9T
6C
4D
2T
KP
0T
KC

2P
9T
6T
4C
AP
2D
JD
9P
AD

6P
0C
0C
3T
4T
AP
KD
AC
QC

Mano inicial
JC QT QD
2P
3C
3P
2P
3C
3P
AD 5C AT
2D 9T
3P
AC 2C 3T
6T
9P AD
9T 8T 2D
5P
2C QD

QP
3T
3T
7C
KD
JC
8T
7T
0D

0C
2D
2C
2C
AT
KT
QC
2C
6P

Mano final
JC QC KC
3D 3C
3P
2P
3C
3P
AD 5C AC
2D 5P
3P
2T 2C 0T
KP JP JD
0T 4T
9P
KC 9C AD

AC
3T
3T
7C
4D
2D
KD
9T
0D

AC
6T
3D
9C
KP
0T
JP
4T
9C

Salidas:
0C
2C
2C
2C
AT
KP
AC
6T
3D

Mejor juego
Escalera de color
Poker
Full
color
Escala
Trio
Doble pareja
Pareja
Carta mas alta

Instrucciones de entrega
En el momento de la inscripci
on de los equipo, cada uno debe designar un coordinador o lder,
quien ser
a el que enve tanto la conformacion del equipo como la indicacion de las funciones que le
han sido designadas a cada uno de los integrantes del mismo.

Prof. Javier Vidal Valenzuela

Lenguajes de Programaci
on

503201

Una vez inscritos todos los equipos el profesor hara una lista con todos los inscritos y designara un
nombre identificatorio para cada grupo, por ejemplo, Grupo 001 para el primer grupo.
El plazo m
aximo para la entrega es el lunes 20 de junio de 2016 a las 23:59 horas, para lo cual cada
equipo debe preparar lo siguiente:
1. un archivo denominado INFORME.PDF que contenga una portada en que figuren, como mnimo,
los nombres de los integrantes del equipo, carrera y el nombre del curso. En su interior, el
informe debe establecer que funciones fueron asignadas a cada miembro del grupo de trabajo
(organizaci
on del grupo), se debe ademas describir la forma en que se desarrollo el trabajo
(algoritmos, estrategias, estructuras de datos) e incluya algunas pruebas realizadas. Finalmente,
el informe debe incluir tambien algunas conclusiones generales del trabajo. No incluya codigo
en el informe.
2. un archivo denominado readme.txt que contenga las instrucciones, tanto para compilar como
para ejecutar su programa. Las indicaciones en este archivo se seguiran estrictamente, por lo
tanto, es su responsabilidad ser claro en el orden y especificidad de las instrucciones.
3. uno o m
as archivos con el c
odigo fuente (codigo en lenguaje C). Los programas deben incluir
(en lneas de comentarios) los nombres completos de los integrantes del grupo ademas de comentarios que permitan identificar las partes principales de los programas. Indique tambien, a
modo de comentario, al principal responsable de cada seccion de codigo.
Todos los archivos mencionados deben comprimirse en un paquete ZIP o RAR con el nombre identificatorio de su equipo, por ejemplo Grupo 001.ZIP, el cual debe ser enviado a traves de la plataforma
INFOALUMNO, secci
on Envo de Trabajos.
Asegurarse de escribir la informaci
on de identificacion del grupo en todos los archivos.
Eliminar despliegues innecesarios en el(los) programa(s).
No ser
an recibidas partes o la totalidad de la tarea en forma impresa.
No enve archivos ejecutables (*.EXE), la plataforma y algunos clientes de correo electronico no lo permiten.
Cuando enve su trabajo, el profesor confirmara si su tarea ha sido recibida sin problemas, si esto no
ocurre, consulte al profesor.
Si despues de enviar la tarea descubre un error y el grupo desea enviar una copia revisada, hacer otro
paquete ZIP o RAR y publicar en INFOALUMNO (no reemplazar el archivo anterior).

Evaluaci
on
El c
odigo ser
a compilado, ejecutado y probado en una maquina usando Windows 8 y Codeblocks, por lo
tanto, si alg
un grupo requiere la instalaci
on de alguna biblioteca especial o aplicacion complementaria, o bien,
si es necesario compilar o correr la aplicaci
on en un sistema operativo diferente, debe informarlo al profesor
usando el archivo readme.txt.
El puntaje m
aximo de la tarea es 60 puntos distribuidos de la siguiente forma:
4 Entrega oportuna.
6 Cumple estructura definida para el informe, incluyendo portada.
10 Describe adecuadamente la organizaci
on y funciones de los integrantes del equipo.
15 Describe las funciones, estructuras de datos, estrategias de solucion al problema.
Prof. Javier Vidal Valenzuela

Lenguajes de Programaci
on

503201

5 Expone conclusiones adecuadas al desarrollo del trabajo.


20 Correctitud del c
odigo cuando es ejecutado. Se realizara una prueba exhaustiva de todas las funciones
solicitadas, incluyendo ingreso de datos fuera de rango o fuera de formato, para los cuales el programa
debe responder correctamente.
El informe debe estar escrito correctamente, bien diagramado y sin problemas de ortografa y redacci
on (se
descontar
a 2 decimas de su nota por cada falta de ortografa en el informe).
La informaci
on contenida en el informe sera evaluada de acuerdo a si esta aporta a la comprension de la
soluci
on al problema. La soluci
on debera ser clara y directa, por tanto, los comentarios deberan ser informativos
y no extensos.

Recomendaci
on
La tarea puede ser desarrollada con cualquier compilador usando el sistema operativo que estime conveniente, sin
embargo, antes de entregar sus resultados se recomienda asegurar que estos compilen y ejecuten en el Laboratorio
de la Facultad de Ingeniera, Edificio ingeniera de Sistemas (usando Codeblocks sobre Windows).
No copie ni compre la tarea, aleatoriamente se seleccionara grupos que seran interrogados sobre el c
odigo,
el informe y las estrategias utilizadas para resolver el problema. Esta interrogacion sera evaluada y ponderada
en un 60% de la nota del trabajo.

Prof. Javier Vidal Valenzuela

Potrebbero piacerti anche