Actividad UNIT Tren

Les presentamos en esta oportunidad el enunciado de un problema que se resolvió en forma colaborativa entre alumnos de la Universidad Nacional de La Plata de la cátedra Programación 2 y alumnos de la Universidad Nacional de Tierra del Fuego de la cátedra de Algoritmos y Programación II.

Al final encontrarán una de las soluciones realizadas por uno de los grupos, el trabajo fue realizado a distancia y supervisado por tutores de ambas universidades.

Enunciado:

Se desea realizar un programa que simule el funcionamiento de asignar pasajeros para que puedan realizar un viaje a la ciudad del  Fin del Mundo en tren. La empresa dispone de P locomotoras (identificadas con los números 1 a P) y N vagones, identificados con los números 1 a N (idVagon).

Todos los vagones tienen la misma capacidad. Los asientos están  distribuidos en 20 filas. Cada fila tiene 4 asientos, identificados con las letras A, B, C, y D.

tren

Una formación está conformada por una locomotora y M vagones (M <= N). La locomotora se pone delante del primer vagón. Los vagones se ubican en la formación ordenados por su número de identificación (idVagon). Los asientos se van asignando por los pedidos que se reciben de los usuarios. Los usuarios, al hacer un pedido, indican la cantidad de asientos requeridos y, si lo desea, el número de vagón (idVagon) en el que quiere viajar.

 Para posibilitarlo el sistema debe informar  los vagones habilitados para ese viaje, la posición de ese vagón en la formación y la cantidad de lugares disponibles en cada vagón. La selección de asientos dentro del vagón la hace el sistema, asignando la cantidad de asientos solicitados a partir del primer asiento libre, de adelante hacia atrás, y de izquierda a derecha. En caso de que el usuario no haya indicado el número de vagón el sistema puede asignar asientos en vagones diferentes.

Se pide crear una unidad (UNIT) tren que permita:

  1. Crear una formación con M    Para generar el número de vagón (idVagon) que se engancha al tren se usa una función randómica que generaM números no repetidos entre 1 y N.
  2. Agregar vagones si la demanda de pasajes supera la capacidad prevista de los M vagones originales. Se pueden agregar vagones mientras no se supere el número de N vagones existentes. En ese caso la reserva se mantiene en una lista de espera.
  3. Dar de baja un vagón que tenga menos del 50% de ocupación, sólo si los usuarios asignados a ese vagón no han solicitado explícitamente viajar en él al hacer la reserva y los asignados pueden distribuirse en otros vagones. En cualquier caso deben emitirse los avisos correspondientes.
  4. Dar de baja una reserva y subir una reserva de lista de espera. Se subirá la primera reserva de la lista de espera que puede ser satisfecha en su totalidad. Se informará la reserva que pudo ser
  5. Informar la cantidad de vagones con pasaje completo.

Descargar:

Solución posible supervisada por los tutores