Advertisement
lukhavi

SimulacionColaEstaticaC

May 8th, 2020
2,141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.84 KB | None | 0 0
  1. #include<stdio.h>
  2. // Cola estatica simple, implementacion basica ineficiente, utilizar listas.
  3.  
  4. #define MAX_CLIENTES 100
  5.  
  6. typedef struct tag_Queue{
  7.     int id;
  8.     float ts,td; // ts y td??
  9. }Queue,*PQueue;        
  10.  
  11. Queue cola[MAX_CLIENTES];   // cola de tamaño limitado
  12.  
  13. static int iLastQueue;      // indice cliente actual ingresado a la cola
  14.  
  15. void Enqueue(void);     // encola cliente  
  16. void Dequeue(void);     // desencola y atiende primer cliente que hay
  17. void showQueue(void);       // Muestra toda la cola
  18. void destroyQueue(void);    // simula destruccion, todas los clientes a 0, no se pueden mostrar
  19. int isFullQueue();         
  20. int isEmptyQueue();      
  21.  
  22.  
  23. int main(void){
  24. / Test Queue
  25.  
  26. Enqueue();
  27. Enqueue();
  28. Enqueue();
  29. Enqueue();
  30. Enqueue();
  31. showQueue();
  32. Dequeue();
  33. showQueue();
  34. Dequeue();
  35. Dequeue();
  36. showQueue();
  37. Dequeue();
  38. showQueue();
  39. Enqueue();
  40. showQueue();
  41. Dequeue();
  42. showQueue();
  43. Dequeue();
  44. showQueue();
  45. Dequeue();
  46. int i;
  47.     for(i=0;i<MAX_CLIENTES;i++) // llena la cola
  48.         Enqueue();
  49.  
  50. showQueue();   
  51. Enqueue();
  52. Dequeue();
  53. showQueue();
  54. destroyQueue();
  55. showQueue();
  56. destroyQueue();
  57.  
  58. return 0;
  59. }
  60.  
  61. // Quita de la cola o atiende al primero que va quedando
  62. void Dequeue(void){
  63.     int i;
  64.     // no hay nadie
  65.     if(isEmptyQueue())
  66.         printf("\nError: La cola esta vacia, espere a que ingrese un cliente.\n\n");       
  67.     else if( iLastQueue == 1){  // hay un solo cliente
  68.         iLastQueue--;       // atiende y se retira
  69.     }
  70.     else{
  71.         for(i = 0;i<iLastQueue-1;i++)   // atiende al primero y avanza la cola
  72.             cola[i] = cola[i+1];
  73.         iLastQueue--;           // un cliente menos
  74.     }
  75. }
  76.  
  77. // encola
  78. void Enqueue(void){
  79.     static int id,ts,td;
  80.    
  81.     if(isFullQueue())
  82.         printf("\nCola llena, atienda a los clientes para poder encolar nuevos clientes.\n\n");
  83.     else{
  84.         cola[iLastQueue].id = id++; // encola nuevo cliente
  85.         cola[iLastQueue].ts = ts++;
  86.         cola[iLastQueue].td = td++;
  87.         iLastQueue++;
  88.     }
  89. }
  90.  
  91. void showQueue(void){
  92.     int i;
  93.     if(isEmptyQueue()) 
  94.         printf("Error: La cola esta vacia, no se puede mostrar.\n\n");
  95.            
  96.     else{
  97.         printf("Quedan %d clientes\n",iLastQueue);
  98.         printf("+----------+----------+----------+\n");
  99.         printf("|%*s|%*s|%*s|\n",10,"Id",10,"Ts",10,"Td");
  100.         printf("+----------+----------+----------+\n");
  101.         for(i = 0;i<iLastQueue;i++)
  102.             printf("|%*d|%*lf|%*lf|\n",10,cola[i].id,10,cola[i].ts,10,cola[i].td);
  103.         printf("+----------+----------+----------+\n\n");
  104.     }
  105.    
  106. }
  107.  
  108. void destroyQueue(void){
  109.     int i;
  110.     Queue tmp;
  111.         tmp.id = 0;
  112.         tmp.ts = 0;
  113.         tmp.td = 0;
  114.     if(!isEmptyQueue()){
  115.         for(i = 0;i<iLastQueue;i++){
  116.             //cola[i].id = 0;   // queda todo a 0      
  117.             //cola[i].ts = 0;
  118.             //cola[i].td = 0;
  119.             cola[i] = tmp;
  120.         }
  121.         iLastQueue = 0;
  122.     }
  123.     else
  124.         printf("\nError: Cola vacia, no se puede destruir.\n\n");  
  125.                
  126.  
  127. }
  128.  
  129. int isFullQueue(){return iLastQueue == MAX_CLIENTES;}
  130. int isEmptyQueue(){return iLastQueue == 0;}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement