elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Colas en C++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Colas en C++  (Leído 3,477 veces)
JesusIII

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Colas en C++
« en: 21 Abril 2016, 13:44 pm »

Hola, hace poco que me han enseñado el tema de las colas y ahora tengo que hacer una practica. Se hacer las funciones del tipo: "encolar","imprimir"...

Hasta ahora he hecho colas simples en las clases prácticas, pero esta última no se ni por donde empezar. El enunciado empieza así:

En dicha ITV existirán 4 colas para diferentes tipos de vehículos:
- Gasolina (vehículos de gasolina)
- Diesel (vehículos diesel no industriales)
- Motos
- Industriales

Cada segundo de ejecución, que representará 10 minutos de tiempo real,
llegará un vehículo a la ITV. Dicho vehículo tendrá una serie de datos que
habrá que guardar: matrícula, marca, modelo, potencia, tipo (G,D,M,I),
hora_llegada, hora_salida, fecha, estado_ITV… Los datos se podrán
generar aleatoriamente.

¿Como empiezo? Gracias de antemano.


En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Colas en C++
« Respuesta #1 en: 21 Abril 2016, 13:59 pm »

Pues podrías hacer una clase o estructura para guardar los datos de cada coche.
Luego, hacer 4 colas que almacenen datos de la clase o estructura mencionada.

Y finalmente, ir generando coches, y meténdolos en cada cola.


En línea

HardForo

Desconectado Desconectado

Mensajes: 219


HardForo.com


Ver Perfil WWW
Re: Colas en C++
« Respuesta #2 en: 21 Abril 2016, 14:06 pm »

Cada tipo de vehiculo queda encolado aparte porque requeririan distinto combustible y/o condiciones especiales o sea.... tienes 4 tipos de vehiculos = colas, te explico:

Dentro de un bucle infinito del tipo while(true) tienes una funcion que genera vehiculos al azar con distintas caracteristicas (matrícula, marca, modelo, potencia, tipo,
hora_llegada, hora_salida, fecha, estado_ITV..) que puedes guardar en un objeto o struct Vehiculo. Digamos se generan asi:

moto, Yamaha, modelo......, potencia 200 cm3,....
moto,....,....
moto,....,....
moto,....,....
moto,....,....
moto,....,....
moto,....,....
vehiculo a gasolina, Ford, modelo T, ......
vehiculo diesel no-industrial
vehiculo diesel industrial
moto
...


El primero que generas tienes que atenderlo primero......... por eso usas una cola pero dentro de su categoria porque no puedes atender una moto más si tienes 20 encoladas (se asume que se puede atender 1 tipo de vehiculo a la vez y no mas)

Entonces.....

Verificas si la cola correspondiente (motos por ejemplo) esta vacia.. y si lo esta atiendes a ese vehiculo (moto). Sino esta vacia, atiendes al que espera en la cola y encolas al recien llegado.  Algo asi:

Código
  1. #include <queue>
  2. #include <stdexcept>
  3. #include <stdlib.h>  // srand, rand
  4. #include <iostream>
  5. #include <string>
  6. #include <time.h>
  7.  
  8. using namespace std;
  9.  
  10. const unsigned short int G = 0;
  11. const unsigned short int D = 1;
  12. const unsigned short int M = 2;
  13. const unsigned short int I = 3;
  14.  
  15. struct Vehicle{
  16. int matricula; // según tu país puede ser numerico o no
  17. string marca;
  18. string modelo;
  19. short unsigned int potencia;
  20. //enum tipo {G, D, M, I};
  21. unsigned short int tipo;
  22. tm hora_llegada;
  23. tm hora_salida;
  24. tm fecha;
  25. enum estado_ITV {BUENO, MALO, REGULAR};
  26. };
  27.  
  28. void atender(Vehicle v);
  29. Vehicle GeneraVehiculo();
  30. void sleep(unsigned int mseconds);
  31.  
  32. int main(){
  33.  
  34. Vehicle v,vc;
  35. queue<Vehicle> colas[4];
  36.  
  37. while(true)
  38. {
  39.  
  40. v = GeneraVehiculo();
  41. printf ("Ingresa vehiculo (tipo %d) de matricula %d\n",v.tipo,v.matricula);
  42.  
  43. if (colas[v.tipo].empty())
  44. atender(v);
  45. else
  46. {
  47. // atiendo a quien espera en cola
  48. vc = colas[(int)v.tipo].front();
  49. colas[(int)v.tipo].pop();
  50. atender(vc);  
  51. colas[(int)v.tipo].push(v); // encolo al recien llegado
  52. }
  53. }
  54. return 0;
  55.  
  56. }
  57.  
  58.  
  59. void sleep(unsigned int mseconds)
  60. {
  61.    clock_t goal = mseconds + clock();
  62.    while (goal > clock());
  63. }  
  64.  


Te dejo la tarea de implementar GeneraVehiculo() y atender()
« Última modificación: 21 Abril 2016, 22:31 pm por boctulus » En línea

HardForo:  foro de Hardware y programación

Se buscan Mods y colaboradores *
JesusIII

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Colas en C++
« Respuesta #3 en: 21 Abril 2016, 14:23 pm »

Gracias por la ayuda, enserio. Pero he olvidado mencionar que el profesor a prohibido usar librerías de colas.
En línea

HardForo

Desconectado Desconectado

Mensajes: 219


HardForo.com


Ver Perfil WWW
Re: Colas en C++
« Respuesta #4 en: 21 Abril 2016, 14:29 pm »

La logica es la misma....... o acaso piensas implementar una cola que no tenga un push(), pop() o un empty() ? 

Debes fijarte que metodos de minima necesitas e implementarlos.......
En línea

HardForo:  foro de Hardware y programación

Se buscan Mods y colaboradores *
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
cOLAS EN JAVa
Java
arbeluc 1 6,177 Último mensaje 14 Mayo 2004, 23:51 pm
por Ragnarok
colas simples
Programación C/C++
nevfuck 2 6,046 Último mensaje 2 Octubre 2010, 13:28 pm
por Gerik
Ayuda con colas en C++
Programación C/C++
edgar_areyes 0 5,316 Último mensaje 28 Noviembre 2010, 05:42 am
por edgar_areyes
Pilas y Colas
Java
Shell Root 2 6,424 Último mensaje 13 Mayo 2011, 22:35 pm
por ShotgunLogic
colas
Programación C/C++
Beginner Web 0 1,459 Último mensaje 14 Octubre 2018, 00:19 am
por Beginner Web
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines