Selección de jugadores para dos equipos

ronda

Imagen extraída de http://laura-laurarocket.blogspot.com.ar/2011/08/la-ronda-juego-musicalizado-que-se-hace.html

Se quiere crear un programa que simule el funcionamiento del  “Procedimiento de selección”. Supongamos un grupo de amigos se juntan para jugar un juego de mesa que se desarrolla en dos equipos. Para eso deben seleccionar que amigos estarán en cada equipo.
La selección la quieren realizar de la forma más azarosa posible y se les ocurre realizar el siguiente procedimiento de selección:
a.    Los alumnos se ponen en ronda.
b.    Se comienza por un compañero que es señalado como el primero de la ronda.
c.    Tira un dado (con valores entre 1 y 6)
d.    En el primer tiro se avanzan tantos lugares en el sentido de las agujas del reloj, como indique el dado.
e.    La persona seleccionada sale de la ronda y va a formar parte del equipo 1.
f.    El siguiente a la persona que fue elegida vuelve a tirar el dado.
g.    Pero esta vez se debe mover en el sentido antihorario, contando tantos lugares como el dado indique.
h.    La persona seleccionada sale de la ronda y va a parar al equipo 2.
i.    El procedimiento se sigue realizando hasta que quede una sola persona y esa persona va al equipo que le corresponde (puede ser el 1 o el 2)

Se pide desarrollar un programa que simule el procedimiento de selección que:
1.    Utilice las estructuras de datos adecuadas al problema. Tengan presente que puede ocurrir que tengan que construir una estructura nueva.
2.    No deben utilizar memoria de más (eficiencia con el uso de memoria).
3.    No deben hacer recorridos de mas (eficiencia con respecto al tiempo de ejecución)
4.    Deben crear y cargar la estructura inicial de personas a jugar.
5.    Deben MODULARIZAR la solución, sino está mal.
6.    Al finalizar la selección deben mostrar quienes quedaron en el equipo 1 y quienes quedaron en el equipo 2.
7.    El programa debe tener todos los mensajes necesarios para saber que cargar, que esta mostrado que se debe hacer, ejemplo: Ingrese un nombre y presione  Enter, etc.

__________________________________________________________________________

Los alumnos trabajaron en grupos y se acordo la siguiente solución durante el segundo cuatrimestre de 2013:

Solución acordada

Juego de la oración

listaCircularAlumnos les dejamos el enunciado e implementación del juego de la oración en Pascal.

Es mismo fue realizado utilizando una lista circular y fue acordado entre los alumnos del curso del primer cuatrimestre de 20131.

ENUNCIADO:

Se quiere crear un programa que simule el “Juego de la Oración”. Supongamos un grupo de amigos que se juntan a jugar al juego de la oración. Se disponen los participantes en una ronda. Cada persona debe ir agregando una palabra, a una oración que se va creando conjuntamente. Es decir, se inicia por un participante diciendo una palabra, el segundo debe decir la palabra que dijo el anterior más una nueva, el tercero las dos palabras anteriores más una nueva, etc. Así si algún participante olvida la oración o agrega más de una palabra queda eliminado.

El juego finaliza cuando queda un solo participante. El juego informa el nombre y apellido de la persona ganadora.

Notas:
• Tenga en cuenta en la solución que plantee que debe cargar la estructura de datos inicial para poder jugar.
• El juego debe funcionar bien y garantizar que se termine al producirse una frase errónea.
• Considere alguna situación que permita interrumpir el programa en el caso que nunca ningún participante se equivoque.
• Debe modularizar la solución.
• Debe simular todo el juego, teniendo en cuenta la pantalla, debe ir informando si el juego va ok o se produce un error, que se debe ingresar.
• Debe informar el nombre del jugador ganador.
• Debe informar el nombre de la persona que sale del juego cada vez que se comete un error.

Descargar desde el siguiente link el: Juego_De_La_oracion

 

Actividad de listas Año 2012

A continuación dejamos algunas de las actividades realizadas en el curso y las propuestas de solución que realizaron los alumnos.

En esta oportunidad vamos a trabajar con el concepto de lista circular doblemente enlazada:

En una lista circular doblemente enlazada, cada nodo tiene dos enlaces, similares a los de la lista doblemente enlazada, excepto que el enlace anterior del primer nodo apunta al último y el enlace siguiente del último nodo, apunta al primero. Como en una lista doblemente enlazada, las inserciones y eliminaciones pueden ser hechas desde cualquier punto con acceso a algún nodo cercano. Aunque estructuralmente una lista circular doblemente enlazada no tiene ni principio ni fin, un puntero de acceso externo puede establecer el nodo apuntado que está en la cabeza o al nodo cola, y así mantener el orden tan bien como en una lista doblemente enlazada.

 

 

PROBLEMA 1

1. Realizar un programa que:
a. Genere una lista doblemente enlazada circular donde cada nodo contiene un número entero.
b. Realizar un modulo que dada una lista doblemente enlazada circular y un valor n >0, debe recorrer la lista y obtener en cada pasada el cociente de la división del valor del nodo por el número n (el divisor). Por ejemplo si el nodo tiene el valor 35 y hay que dividir por 5, lo que queda en el nodo es 7.
El recorrido se termina cuando todos los nodos de la lista circular presentan en su contenido un valor donde el resto de la división es igual al valor del dividendo.

Descargar la solución: ListaCircularDobleG8 realizada en Septiembre de 2012 por los alumnos Ailan Julian,  Colazo Exequiel y Crudele Emilio.

 

PROBLEMA 2

Realizar un programa que:
a. Genere una lista doblemente enlazada circular. Cada nodo contiene un número entero.
b. Realizar un modulo que dada una lista doblemente enlazada circular y un valor n >0, debe recorrer la lista y modificar el valor de cada nodo con el valor actual del nodo elevado a la potencia n. En cada pasada el valor de n se decrementa en uno. El recorrido se detiene cuando n es menor o igual a 1.

Descargar la solución ListaCircularG13Potencias realizada en Septiembre de 2012 por los alumnos: : Alza Juan Mateo;  Basanta Sofia;   Blanco Regojo Mauricio; Evangelista y Mauro Ariel

Les dejamos también otra solución ListaCircularG11Potencias realizada por otro grupo al mismo problema en septiembre 2012. Los alumnos son: Bob Mauro David, Discoli Tomás, Garcia  Manuel, Garcia Morzone, Isidro Sergio, Santarcángelo, Zazzetta Marco

 

Listas Circulares

La lista circular es una estructura de datos homogénea, dinámica y lineal.
Tienen un puntero a un elemento de la lista para poder iniciar su recorrido.
El puntero del último nodo apunta al primer nodo. Tiene la misma estructura que una lista simple, pero varía en cuanto a la organización. Esto provocará que prestemos especial atención en sus operaciones

La lista circular puede implementarse con una lista simple donde el ultimo puntero es nil y se utiliza un puntero auxiliar para moverse dentro de la lista. Al llegar al ultimo nodo, se continua con el puntero al primero, es decir que el puntero auxiliar pasa a apuntar al primer elemento de la lista nuevamente.

La otra implementación se realiza con una lista simple pero no se coloca el puntero del último nodo en nil, sino que se hace apuntar este último puntero al primer nodo de la lista para poder circular. Esta implementación se la conoce como lista circular pura y les dejo un archivo. pdf con el código. Esta implementación fue resuelta por el alumno García Manuel en Agosto del 2012.

Haciendo clic en el siguiente enlace ListaCircularPura2012