Algoritmos y Program - Universidad de Carabobo

Anuncio
Universidad de Carabobo
Facultad Experimental de Ciencias y Tecnología
Departamento de Computación
CS218: Algoritmos y Programación II
Proyecto 1: Estructuras Dinámicas Lineales. (Lista, Pila, Cola)
Nombre de los archivos
Entrada:
artistas.in
albumes.in
canciones.in
rockola.in
Salida:
log.out
reporte.out
1. OBJETIVO
Se espera que, al finalizar esta actividad, el estudiante fácilmente pueda desarrollar
estructuras dinámicas mediante la utilización de apuntadores y bajo el paradigma orientado a
objetos, para la posterior resolución de problemas de manera eficiente, que requieran el
manejo de dichas estructuras.
2. ACTIVIDADES
Planteamiento del problema
La empresa “Aparatos Musicales C.A.” desea desarrollar un prototipo de Rockola para
distribuirla entre sus clientes. La Rockola es un aparato del tipo Vending Machine que tiene la
finalidad de ejecutar canciones sobre pedido; es decir, cuando una persona accede a la
Rockola, le indica mediante algún mecanismo de interacción cuales canciones quiere oír y en
que orden. Para activar el mecanismo de selección de canciones la persona debe primero
depositar en una ranura la cantidad total de dinero (o fichas) que sea requerido según las
especificaciones que generalmente se encuentran adosadas al aparato.
El funcionamiento de la misma es el siguiente:
1) el usuario se dirige a la máquina, introduce monedas o fichas en una ranura que se
encuentra en el frente de la maquina por un total igual o mayor que el costo del
servicio requerido y espera una señal (visual y/o auditiva) de conformidad de la
máquina. Ver tabla de costos anexa.
2) El usuario selecciona una canción por vez en un panel frontal donde aparecen los
nombres de las canciones con un código y marca el número del código en un teclado de
diez dígitos que se encuentra en la parte delantera de la máquina culminando con la
tecla ACEPTAR al introducir el último código.
3) Una vez introducidos los códigos, el usuario pulsa el botón SECUENCIAL o ALEATORIO
dependiendo de si desea que las canciones seleccionadas se ejecuten en uno u otro
modo.
4) El usuario puede pulsar en este momento el botón PRIORIDAD lo cual lo coloca en una
cola de usuarios con prioridad
5) Una vez que el usuario este conforme con su selección y modo de ejecución pulsa el
botón FINALIZAR y debe esperar que llegue su turno para oír las canciones
seleccionadas.
Las restricciones de uso del aparato son las siguientes:
1) Un usuario puede solicitar hasta cinco canciones por vez; es decir, puede utilizar el
aparato tantas veces como desee pero con un máximo de cinco canciones por vez
2) La ejecución de las canciones se realiza en estricto orden de usuario; es decir, se
ejecutaran primero las canciones des usuario n, luego el n+1, n+2, etc. Esto es válido
tanto para los usuarios sin prioridad como para aquellos con prioridad.
3) El dispositivo cuenta con un mecanismo de almacenamiento de discos compactos de
hasta 100 unidades, cada una con un total de hasta 25 canciones. Cada CD
corresponde al álbum de un artista y no existe repetición ni de canciones ni de
álbumes.
4) Cada vez que el dispositivo debe ejecutar una canción, levanta uno a uno los CDs que
están sobre el CD que tiene la canción deseada y los deposita en un mecanismo de
almacenamiento auxiliar, luego levanta el CD que tiene la canción deseada y lo coloca
en el mecanismo de ejecución, mueve el cabezal lector y comienza su ejecución. En
caso que el CD que tiene la canción solicitada ya se encuentre el mecanismo de
almacenamiento auxiliar entonces levanta uno a uno los CDs de este último mecanismo
y los deposita en el mecanismo de almacenamiento principal hasta alcanzar el CD
deseado. Luego toma este último y lo deposita en el mecanismo de ejecución
procediendo a ejecutarlo.
5) Una vez culminada la ejecución devuelve el CD ejecutado a su posición en el
mecanismo de almacenamiento.
6) Cada canción tiene un código asignado que indica: a) el código del artista, b) el número
que le corresponde al CD en el mecanismo de almacenamiento principal cuando se
encuentran en él todos los CDs, contado de arriba hacia abajo, c) el número de la
canción dentro del CD contada desde la primera hasta la última. Considere que un
artista puede tener varios álbumes.
Tabla Costos en Bs. según Nro. de Canciones/Modo
Numero de
1
2
3
4
Canciones
Sin Prioridad
1000
2000
3000
3500
Con Prioridad
50% adicional al costo sin prioridad
5
4000
Se desea que Ud. implemente la Clases Lista, Pila y Cola, además de las clases que Ud.
considere necesarias para modelar el problema. Asimismo, deberá desarrollar un programa
que simule el comportamiento de la rockola basado en las funciones y restricciones descritas
previamente.
Especificación de la entrada
La entrada consistirá de cuatro (4) archivos:
artistas.in
En este archivo se encuentra la información relacionada con los artistas. El archivo contendrá
N (no se conoce) líneas. Cada línea contiene un número entero X de tres (3) dígitos, el cual
representa el código del artista, seguido del nombre de dicho artista.
101 Black Eyed Peas
102 Eminem
103 50 Cent
albumes.in
En este archivo se encuentra la información relacionada con los álbumes. El archivo contendrá
N (no se conoce) líneas. Cada línea contiene un número entero Y de seis (6) dígitos, el cual
representa el código del CD, seguido del título de dicho CD. Los tres (3) primeros dígitos del
código, tomados de izquierda a derecha, representan el código del artista al cual pertenece el
CD, los siguientes tres (3) dígitos representan el código del CD en función a su lugar en la
rockola. Las líneas estarán ordenadas de la misma forma como están ordenados los CD’s en la
rockola.
101201
102202
103203
101204
Elephunk
Curtain Call
The Massacre
Monkey Business
canciones.in
En este archivo se encuentra la información relacionada con las canciones. El archivo
contendrá N (no se conoce) líneas. Cada línea contiene un número entero Z de ocho (8)
dígitos, el cual representa el código de la canción, seguido del título de la canción. Los tres (3)
primeros dígitos del código, tomados de izquierda a derecha, representan el código del artista
al cual pertenece la canción, los siguientes tres (3) dígitos representan el código del CD en el
cual se encuentra, y los dos (2) últimos dígitos se corresponden con el número de la canción
dentro del CD. Las líneas estarán ordenadas alfabéticamente por título de la canción.
10320311
10120112
10120414
10120413
10120412
10320318
10320307
10220214
10120411
10320313
10120404
10120402
10120407
10220202
10120408
10120109
10320306
10320309
10320319
10120409
10220213
10320315
10120101
10120104
10320304
10320302
10220201
10320301
10320314
10220215
10120102
10120107
10120114
10120103
10120406
10220210
10220206
10220212
10120405
10220204
10120403
10320316
10320308
10320305
10320317
10120401
10320312
10120108
10220207
10120105
10220208
10320310
10120106
10320320
10220205
10220217
10120111
10120110
10220211
A Baltimore Love Thing
Anxiety
Audio Delite At Low Fidelity
Ba Bump
Bebot
Build You Up
Candy Shop
Cleanin' Out My Closet
Disco Club
Disco Inferno
Don't Lie
Don't Phunk With My Heart
Dum Diddly
Fack
Feel It
Fly Away
Gatman And Robin
Get In My Car
God Gave Me Style
Gone Going
Guilty Conscience
Gunz Come Out
Hands Up
Hey Mama
I'm Supposed To Die Tonight
In My Hood
Intro
Intro (EXPLICIT)
Just A Lil Bit
Just Lose It
Labor Day (It's A Holiday)
Latin Girls
Let's Get It Started
Let's Get Retarded
Like That
Like Toy Soldiers
Lose Yourself
Mockingbird
My Humps
My Name Is
My Style
My Toy Soldier
Outta Control
Piggy Bank
Position Of Power
Pump It
Ryder Music
Sexy
Shake That
Shut Up
Sing For The Moment
Ski Mask Way
Smells Like Funk
So Amazing
Stan
Stan (Live)
The apl Song
The Boogie That Be
The Real Slim Shady
10220203
10120410
10320303
10120415
10220216
10120113
10220209
The Way I Am
They Don't Want Music
This Is 50
Union
When I'm Gone
Where Is The Love?
Without Me
rockola.in
En este archivo se encuentra la información relacionada con los usuarios. El archivo constará
de N (no se conoce) líneas. Cada línea contiene un número entero W, que representará la
cantidad de bolívares introducidos por el usuario, luego siguen M (no se conoce) códigos de
canciones, posteriormente la palabra ACEPTAR indicando el final de la lista de canciones
introducidas por el usuario, luego viene el modo de reproducción (SECUENCIAL o ALEATORIO),
luego la PRIORIDAD (opcional) y por último FINALIZAR indicando el fin de la línea.
2000
5000
6000
4000
1000
3000
4000
10120411
10320304
10220213
10220214
10120409
10120413
10320314
10320301 ACEPTAR SECUENCIAL FINALIZAR
10120114 10320307 ACEPTAR ALEATORIO FINALIZAR
10120103 10120412 10220206 10320311 ACEPTAR ALEATORIO PRIORIDAD FINALIZAR
10220215 10120413 ACEPTAR SECUENCIAL PRIORIDAD FINALIZAR
ACEPTAR SECUENCIAL FINALIZAR
10320315 ACEPTAR SECUENCIAL PRIORIDAD FINALIZAR
10220214 10320301 10320318 10120409 10320314 ACEPTAR SECUENCIAL FINALIZAR
Especificación de la salida
La entrada consistirá de dos (2) archivos:
log.out
En este archivo se llevará un historial de las transacciones hechas por la rockola. Cada línea
contendrá la siguiente información:
Estatus: Indica si la transacción fue exitosa o no.
Vuelto: Si la transacción fue exitosa, indica el vuelto para el usuario.
Motivo: Si la transacción no fue exitosa, indica el motivo por el cual no se pudo realizar
la transacción (Pago Insuficiente o Límite de canciones excedido).
Transacción
Transacción
Transacción
Transacción
Transacción
Transacción
Transacción
exitosa, vuelto: 0 Bs.
exitosa, vuelto: 2000 Bs.
exitosa, vuelto: 0 Bs.
cancelda, Motivo: Pago Insuficiente.
exitosa, vuelto: 0 Bs.
exitosa, vuelto: 0 Bs.
cancelda, Motivo: Límite de canciones excedido.
reporte.out
En este archivo se almacenará el listado de todas las canciones que se tocaron en la rockola,
en el mismo orden como fueron reproducidas. Cada línea tendrá el código de la canción,
nombre del artista, título del álbum, y título de la canción. Finalmente la cantidad de canciones
sin prioridad y con prioridad, total de canciones y el total de la ganancia en bolívares.
Código:
Código:
Código:
Código:
Código:
Código:
Código:
Código:
Código:
10120412,
10220213,
10320311,
10120103,
10220206,
10120413,
10320315,
10120411,
10320301,
Artista:
Artista:
Artista:
Artista:
Artista:
Artista:
Artista:
Artista:
Artista:
Black Eyed Peas, Album: Monkey Business, Canción: Bebot
Eminem, Album: Curtain Call, Canción: Guilty Conscience
50 Cent, Album: The Massacre, Canción: A Baltimore Love Thing
Black Eyed Peas, Album: Elephunk, Canción: Let's Get Retarded
Eminem, Album: Curtain Call, Canción: Lose Yourself
Black Eyed Peas, Album: Monkey Business, Canción: Ba Bump
50 Cent, Album: The Massacre, Canción: Gunz Come Out
Black Eyed Peas, Album: Monkey Business, Canción: Disco Club
50 Cent, Album: The Massacre, Canción: Intro (EXPLICIT)
Código:
Código:
Código:
Código:
10320307,
10120114,
10320304,
10120409,
Artista:
Artista:
Artista:
Artista:
50 Cent, Album: The Massacre, Canción: Candy Shop
Black Eyed Peas, Album: Elephunk, Canción: Let's Get It Started
50 Cent, Album: The Massacre, Canción: I'm Supposed To Die Tonight
Black Eyed Peas, Album: Monkey Business, Canción: Gone Going
Número de Canciones Sin Prioridad: 7
Número de Canciones Con Prioridad: 6
Número de Canciones: 13
Total: 15000 Bs.
La entrega del proyecto se realizará en un sobre manila tamaño carta debidamente identificado
con el nombre, apellido, cédula y sección de cada uno de los integrantes del equipo, y debe
contener lo siguiente:
•
•
Un diskette 3½ de alta densidad, con formato para DOS, que contenga en el directorio raíz
únicamente los archivos fuente de su solución. Nota: Deberá utilizar para el desarrollo del
programa solamente lenguaje C++.
Un informe en el que debe exponer todos los detalles de su solución.
o Análisis de la solución del problema (no más de dos páginas)
o Diagrama de Clases. Empleando para ello UML
o Representación Gráfica y Formal de las Estructuras de Datos utilizadas.
o Seudo_código del algoritmo que simula el funcionamiento de la rockola (es
indispensable que esto se realice en lenguaje seudo formal). Este algoritmo debe
incluir todas las declaraciones y definiciones necesarias y debe estar debidamente
intra documentado e identado. Abstenerse de colocar traducciones de C++ ó el
mismo código de C++. Solo son necesarios los algoritmos referentes a la resolución
del problema planteado.
El informe debe estar impreso en papel bond blanco base 20 tamaño carta, escrito por una
sola cara, con un margen izquierdo de 3 cm. y los restantes de 2 cm. Para el texto en prosa
debe utilizar caracteres de tamaño 12 puntos estilo Arial o Verdana. Para el pseudo-código
debe utilizar caracteres de tamaño 10 puntos estilo Courier New.
Evaluación:
Se evaluará positivamente:
•
•
•
•
•
•
•
•
Estructuración del código según el paradigma orientado a objetos.
Adecuación de las estructuras de datos.
Localidad de variables, funciones y procedimientos.
Paso de parámetros.
Comentarios apropiados.
Calidad de la documentación, memoria y análisis del problema.
Nomenclatura de variables, procedimientos y demás elementos.
Cada método debe llevar un comentario con:
o Acción que realiza.
o Parámetros de entrada y sus roles.
o Valor devuelto.
o Precondiciones de los valores de los parámetros.
o Condiciones de error tratados dentro de cada acción.
8. Observaciones
•
•
•
El proyecto debe ser realizado en equipos de máximo dos (2) estudiantes, sin excepción.
Los archivos deben entregarse en un disquete y también ser enviados por correo
electrónico a la siguiente dirección: [email protected]. Para el caso del envío
por correo electrónico, los archivos deben ser colocados en un directorio y posteriormente
comprimido en formato ZIP o TAR.GZ.
El diskette debe estar identificado con una etiqueta indicando el nombre, apellido, cédula y
sección de cada uno de los integrantes del equipo.
•
•
•
•
•
•
•
•
•
•
•
Verifique bien que el diskette no esté defectuoso y que contiene todos los archivos.
Los programas que entreguen deben estar debidamente presentados y documentados.
Se evaluará estrictamente lo que está en el informe y en el diskette. Si por alguna
razón (virus, diskette vacío, archivos faltantes, diskette defectuoso, etc.) no es
posible corregir su programa, éste se considerará no entregado.
Verifique con detenimiento la redacción y la ortografía, ya que ambos aspectos serán
evaluados.
Los equipos que no sigan las normas y lineamientos establecidos por la unidad académica
para la elaboración del proyecto, tendrán un porcentaje de descalificación sobre la nota
total obtenida.
Los equipos que entreguen el proyecto después de la fecha tope establecidas por la unidad
académica, tendrán tres puntos de descalificación (sobre la nota total obtenida) por cada
día de retraso.
El formato de los archivos de entrada y salida deben ser respetados fielmente.
Deben respetarse los nombres de los archivos, estructuras de datos, funciones y/o
procedimientos descritos en este enunciado.
Los programas que entreguen deben estar debidamente presentados y documentados con
el nombre del autor, cédula de identidad y sección a la que pertenece.
El lenguaje de programación a utilizar es C++, y el entorno de programación con el cual
será evaluado el proyecto es Anjuta bajo ambiente Linux.
El archivo o archivos fuentes deben seguir el siguiente estándar de nomenclatura.
Archivos Fuentes
<Nombre del Estudiante>_nombre_libreria.h
Fuentes de las operaciones
<Nombre del Estudiante>_nombre_libreria.cpp
Programa Principal
<Nombre del Estudiante>_PROYECTO_1.cpp
Ejemplo:
Pedro_Perez_lista.h
Pedro_Perez_lista.cpp
Pedro_Perez_PROYECTO_2.cpp
NOTA: EL NO CUMPLIMIENTO DE LAS OBSERVACIONES DESCRITAS
ANTERIORMENTE,
GENERARÁ
PUNTOS
MENOS
SOBRE
LA
CALIFICACIÓN TOTAL DEL TALLER.
Descargar