Ver Mensaje Individual
  #7 (permalink)  
Antiguo 02/07/2005, 18:13
Avatar de spike_jr
spike_jr
 
Fecha de Ingreso: febrero-2005
Ubicación: Valencia
Mensajes: 114
Antigüedad: 19 años, 2 meses
Puntos: 2
Ejercicio 6

Lenguaje: C++
Dificultad: Normal
Descripcion:

Para realizar el trabajo que se nos ha encargado, el alumno deberá adaptar la clase Cola vista en clase para que pueda guardar los trabajos de impresión (string).

El programa trabajará con dos colas que van a guardar hasta 10 elementos en cada una de ellas (una para la impresora antigua y otra para la nueva).

Al comenzar el programa se entrará en un bucle con el menú de decisiones, del cual sólo se saldrá si se elige la opción “salir” (cerrar los servidores de impresión). Además de esta opción se contará con las siguientes opciones:

1.-Mandar a imprimir un fichero a la impresora vieja.

El alumno deberá introducir el nombre del fichero a imprimir. Si la cola de impresión ya está llena (es decir, tiene ya 10 elementos en cola) se pierde el fichero que se pretendía imprimir y se pasa a un fichero histórico llamado errores.dat donde se almacena la información sobre el nombre del fichero que se ha perdido y la impresora donde se ha intentado imprimir (impr_vieja)
separados por el carácter ‘:’.

2.-Mandar a imprimir un fichero a la impresora nueva.

El alumno deberá introducir el nombre del fichero a imprimir. Si la cola de impresión ya está llena (tiene ya 10 elementos en cola) hace lo mismo que la impresora antigua. Es decir, se pierde el fichero que se pretendía imprimir y se pasa a un fichero histórico llamado errores.dat donde se almacena la información sobre el nombre del fichero que se ha perdido y la impresora donde se ha intentado imprimir (impr_nueva) separados por el carácter ‘:’.

3.-Avanzar una unidad de tiempo.

Con esta opción simulamos el paso del tiempo. Cuando hacemos avanzar una unidad de tiempo, la impresora nueva imprime el primer elemento de su cola (es decir, que lo elimina de la cola de impresión). La impresora vieja, como es la mitad de rápida, sólo imprime cada 2 veces que se pase por aquí. Es decir, que las veces “pares” que se pase por esta opción de “avanzar una unidad de
tiempo” se eliminará un elemento de la cola de la impresora vieja.

Una vez impresos los trabajos que se tengan que imprimir, se comprobará si la impresora nueva ha impreso ya 5 trabajos. Si es así, hay que tomar las medidas oportunas para que no se rompa y se pierda el menor número posible de trabajos. Para eso, pasaremos los elementos que quedan en la cola de la impresora nueva a la cola de la impresora vieja, siempre y cuando la cola de la
impresora vieja no esté llena. Cuando la cola de la impresora vieja ya esté llena se descartarán los ficheros que queden, indicando en el fichero “errores.dat” que son trabajos de la impresora nueva redirigidos a la vieja y descartados. Al vaciarse la cola de la impresora nueva, ésta se enfría
y vuelve a estar dispuesta para imprimir trabajos.

0.-Cerrar los servidores de impresión.

Está opción hará salir al programa del bucle en el que se encuentra, mostrará por pantalla el fichero de errores “errores.dat” y detendrá el servicio de impresión.

A continuación tenemos un ejemplo de cómo podría quedar el fichero "errores.dat”.

listado.xls:impr_vieja
docu1.doc:impr_nueva
docu2.doc:impr_nueva:impr_vieja
docu3.doc:impr_vieja

La primera y la última línea corresponde a ficheros que han tratado de ser impresos en la impresora vieja cuando estaba su cola llena. La segunda línea corresponde a un fichero que ha tratado de imprimirse en la impresora nueva cuando ya estaba llena la cola con 10 elementos. La tercera línea corresponde a un fichero que trató de imprimirse en la impresora nueva, pero se estropeó y se intentó pasar a la impresora vieja, pero esta ya tenía la cola llena con 10 elementos.

Cada vez que se avance una unidad de tiempo el programa de monitorización de las colas mostrará el estado de cada cola de impresión y si se calienta la impresora nueva se debería mostrar una cola vacía y la otra cola con todos los elementos que haya podido admitir.

Pista: Crear una clase cola (Cola.h, Cola.cpp) y manerjarla con un programa principal.

Fuente del ejercicio: Una práctica de la universidad
__________________
Cita:
"La programación es una carrera entre ingenieros de software luchando para construir programas cada vez más grandes, mejores y a prueba de idiotas, y el universo intentando producir cada vez más grandes y mejores idiotas. Por ahora, gana el universo." by Rich Cook