C/Visual C - Proyecto de listas y colas - Autolavado

 
Vista:
sin imagen de perfil

Proyecto de listas y colas - Autolavado

Publicado por Hector (11 intervenciones) el 04/01/2015 18:07:00
Buenas, tengo un par de dudas con un proyecto, el enunciado y el codigo los dejo adjuntados.

Ya he hecho las partes fundamentales del código, sin embargo, no se que hacer con respecto a la pila, se que es limitada y que reside a los usuarios que han terminado de recibir todos los servicios, mas no conozco si hay que enviar cada usuario que ha terminado los servicios o uno especifico, tampoco se si al estar llena la pila, se debe de pausar todas las acciones o se retiran los usuarios, en fin, esta fue mi lógica sin embargo si existe un mejor método para realizar las mismas acciones pero con una menor cantidad de recursos me seria de gran ayuda para que en caso futuros problemas con la misma similitud ya tenga una idea de como hacerlo, de antemano muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Proyecto de listas y colas - Autolavado

Publicado por Chema (234 intervenciones) el 04/01/2015 22:58:16
El enunciado del proyecto, no tiene mucho sentido, no es posible realizar el proyecto de forma coherente sin usar hilos de ejecución diferentes por cada acción.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Proyecto de listas y colas - Autolavado

Publicado por Hector (11 intervenciones) el 04/01/2015 23:54:27
Debido a mi poco nivel de conocimiento, todavia no he visto el tema de hilos, sin embargo, realice el programa de forma que cumpliera una acción a la vez al hacer las transferencias.

Por lo que pude entender (y sin incluir la cuestión de la pila hehe...), el programa debe de cumplir estas acciones.

- Generar un cliente y enviarlo a la cola principal (Atención).
- Al terminar de ser atendido, dependiendo de los servicios que quiere se le transfiere a la cola respectiva, en caso de tener mas de un servicio, este se va transfiriendo de una cola a otra, hasta que ya no tenga mas servicios pendientes.
- Una ves culminado todos sus servicios, el cliente se retira de forma inmediata.

Y realiza esta misma acción hasta que termine el tiempo de simulación y todos los clientes ya hayan sido atendidos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Proyecto de listas y colas - Autolavado

Publicado por Chema (234 intervenciones) el 05/01/2015 10:54:52
El enunciado no tiene lógica coherente.

- Al terminar de ser atendido, dependiendo de los servicios que quiere se le transfiere a la cola respectiva, en caso de tener mas de un servicio, este se va transfiriendo de una cola a otra, hasta que ya no tenga mas servicios pendientes.

Si sólo exite un cliente, NO HAY COLA DE ESPERA POR LOS SERVICIOS.

Personalmente, antes de codificar, uso un lápiz y papel , y trazo el esquema, la lógica del código,, me evita perder el tiempo desarrollando "ideitas raras".
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Proyecto de listas y colas - Autolavado

Publicado por Hector (11 intervenciones) el 06/01/2015 00:32:17
Creo que lo dije mal, dependiendo del servicio que desea el cliente, se va a transferir a una estación de trabajo.

Existe una estación de trabajo para la zona de atención al cliente (que es la entrada del autolavado donde se van a incorporar los nuevos clientes), cambio de aceite y lavado de motor, sin embargo el área de lavado y aspirado posee 4 estaciones.

En caso de estar ocupada la estación de trabajo, es obvio que se generara una cola. En el programa que diseñe primero paso el cliente a la estructura de cola, e inmediatamente pregunto si la estación de trabajo (que es otra estructura que puede contener un cliente) esta disponible en ese mismo instante, de ser así, hago el pase.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Proyecto de listas y colas - Autolavado

Publicado por Tom (619 intervenciones) el 05/01/2015 18:10:21
Por lo que yo entiendo, las colas son ilimitadas en tamaño, y de tipo FIFO (excepto la del aparcamiento, que es lo que más te complica el asunto).
La gestión de las colas de servicios no tiene mucha complicación, almacenas en la cola del primer servicio solicitado los datos del cliente (que incluyen el resto de posibles servicios deseados) y cuando le toque el turno se le atiende y se le pasa o a la cola de otro servicio, o al aparcamiento o a la cola de facturación.

Una vez que el cliente ha pagado se va y te olvidas.

Pero os han puesto una condición complicada que teneis que resolver de una de las múltiples formas posibles: La cola del aparcamiento. Si solamente puede salir el último coche que entró, este es de un cliente que tiene menos prioridad que los demás en el acceso a los servicios (o a la facturación) ...

Así que yo me olvidaría del problema del aparcamiento y haría antes todo lo demás. Después debes decidir si a los que dejan su coche les dás más prioridad para no atascar el aparcamiento, o si ideas algún truco para irlos moviendo de manera que se invierta su orden de estacionamiento.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Proyecto de listas y colas - Autolavado

Publicado por Hector (11 intervenciones) el 06/01/2015 01:55:40
La cola de facturación vendría siendo la cola de atención, que es cuando esta apunto de entrar al autolavado, allí tambien contabilizare los servicios que desea el cliente, y una vez hecho eso, lo enviare al servicio respectivo y seguirá el método que mencionaste.

Sobre la pila, en verdad si hace falta condiciones para incorporar un usuario al estacionamiento y tambien para retirarlos, ademas de ser muy confuso ya que puede que haya una condición en donde el estacionamiento este completo y deba sacar el primer vehículo que se estaciono, eso quiere decir sacar todos los demás autos para sacar ese único vehículo y sin perder los datos de los vehiculos al extraerlos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Proyecto de listas y colas - Autolavado

Publicado por Chema (234 intervenciones) el 06/01/2015 11:53:13
En el enunciado se lee: se deben utilizar estruccturas dinámicas ( lista simplemente enlazada con centinela).

Colocar un centinela es una cosa muy buena, mejor , si es un centinela atómico y así se garantiza la atomicidad atomica de un único proceso secuencial. que encola 3 colas derivadas de un sólo proceso.

Según el enunciado, El misteriosos aparcamiento de 5 coches rodeado de una pared a excepción de un lado donde entras y salen coches se trata como LIFO, que debe coincidir con la atención recibida por el cliente, osea el último vehículo que entra es el primero en ser retirado, entonces se deduce que que se trabaja con un sólo cliente a la vez, me pregunto entonces ¿Para qué sirven las colas?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Proyecto de listas y colas - Autolavado

Publicado por Tom (619 intervenciones) el 06/01/2015 17:49:20
No sé qué es exactamente un centinela, pero no veo claro que haga falta nada si un solo proceso encola y desencola ...
No todos los clientes usan el parking, solamente algunos que no se sabe cuando regresarán a recoger su vehículo. En mi opinión, los demás no importa dónde estén esperando, simplemente están en la lista de espera que sea.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Proyecto de listas y colas - Autolavado

Publicado por Chema (234 intervenciones) el 07/01/2015 12:04:50
Toni , un centinela (sentinel) tiene varios usos, en ell caso del enunciado se usa de adorno, para que suene más importante el trabajo .. También se usa frecuentemente de adorno la palabra atómico, atomicidad, de ahí se desprende mi licencia irónica en el escrito anterior.

El problema de las 3 listas y un solo proceso en la emulación del tiempo necesario por cada servicio, si se hace un sleep() se bloquea el proceso entero y falsea la totalidad, se supone que varios clientes trabajan sobre distintos servicios con un tiempo de duración determinada y eso requiere mucha, quizás demasiada fantasía trabajando sobre un único proceso.

Fantasía , y creatividad, sólo se llevan bien con la técnica correcta.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Proyecto de listas y colas - Autolavado

Publicado por Hector (11 intervenciones) el 07/01/2015 16:20:53
Por lo que yo entiendo, el centinela es un nodo especial que se encarga de mantener un control sobre cada evento que ocurre en la lista/cola, puede contener contadores, verificadores, estadísticas, etc.

Es cierto que no es algo necesario, pero la cuestión es que el profesor a cargo del proyecto quiere que la implementemos para saber si tenemos conocimiento claros sobre ella (lo gracioso es que dijo lo mismo con lo del estacionamiento..)

Como en el enunciado me piden que saque unas estadísticas por cada cola, establecí el centinela como las "estaciones de trabajo", que contendrán el primer valor de la lista de servicio, ademas de que verificara si alguien esta siendo atendido en la estación respectiva, llevara la cantidad de personas que ingresaron en la cola, cantidad promedio, mayor cantidad de personas que tuvo esa cola, entre otras cosas.

En cuanto al parking, decía para colocar un aleatorio de 0 y 1 para saber si el usuario quiere guardar el vehículo en el parking, y el tiempo de espera promedio, hacerlo en función del tipo de vehículo que posee y la cantidad de servicios que pidió.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar