Advertisement
luciana1237

Untitled

Aug 23rd, 2018
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 5.07 KB | None | 0 0
  1. /*programa que simula uma biqueira */
  2.  
  3. #include <stdio.h> /*I/O*/
  4. #include <stdlib.h>/*malloc */
  5. #include <stdbool.h>/*bool*/
  6. #include <time.h>/*srand && rand */
  7. #include <unistd.h> /*sleep */
  8.  
  9.  
  10. typedef struct Queue
  11. {
  12.     int qtd_po,qtd_mac,qtd_crack,xlen,len,size;
  13.     struct Queue *begin,*end;
  14. }queue;
  15.  
  16.  
  17. queue *queue_create(void)
  18. {
  19.     queue *q = (queue *) malloc(sizeof(queue));
  20.    
  21.     if (q!= NULL)
  22.         q->begin =NULL;
  23.         q->end = NULL;
  24.    
  25.     return q;
  26. }
  27.  
  28. int len=0,size=0,_size1=0,lucro=0,lucro1=0,lucro2=0;
  29.  
  30. int random_id(void)
  31. {
  32.     srand(time(NULL));
  33.    
  34.     return rand() %1000;
  35. }
  36.  
  37. queue *enfileirar(queue **q,int qtd,int qtd1,int qtd2)
  38. {
  39.     queue *novo = (queue *) malloc(sizeof(queue));
  40.     int y,r,x,k;
  41.  
  42.     x= random_id();
  43.     (*q)->xlen=0;
  44.    
  45.     (*q)->qtd_mac =qtd;
  46.     (*q)->qtd_crack =qtd1;
  47.     (*q)->qtd_po=qtd2;
  48.    
  49.     printf("-> %d \n",(*q)->xlen);
  50.    
  51.     srand(time(NULL));
  52.    
  53.    
  54.     if (novo == NULL)
  55.     {
  56.         fprintf(stderr,"erro de alocacao\n");
  57.         exit( 0 );
  58.     }
  59.    
  60.    
  61.     if (novo != NULL)
  62.     {
  63.         novo->begin = NULL;
  64.         novo->end = (*q);
  65.        
  66.         if ((*q)->end == NULL)
  67.         {
  68.             printf("\nFILA VAZIA--\n");
  69.             (*q)->begin = novo;
  70.         }else
  71.         {
  72.             printf("\nTEM\n");
  73.             (*q)->end = novo;
  74.         }
  75.        
  76.         r = rand() %4;
  77.        
  78.         if (r == 1)
  79.         {
  80.             k = rand() % 10;
  81.             printf("Cliente: %d Quer: %d maconha \n",x,k);
  82.             printf("CONFERINDO...\n");
  83.             sleep(2);
  84.            
  85.             if (k > (*q)->qtd_mac)
  86.             {  
  87.                 printf("\nn[!] NAO TEM ESSA QUANTIDADE NO MOMENTO \n");
  88.                 (*q)->xlen--;
  89.    
  90.             }else
  91.             {
  92.                 sleep(1);
  93.                 printf("CLIENTE %d COMPROU: %d de Maconha \n",x,k);
  94.                 (*q)->qtd_mac = (*q)->qtd_mac -k;
  95.                 lucro= lucro+10*k;
  96.                 (*q)->xlen=(*q)->xlen+1*k;
  97.             }
  98.            
  99.         }else if (r == 2)
  100.         {
  101.             k = rand() %10;
  102.             printf("Cliente: %d Quer: %d cocaina \n",x,k);
  103.             printf("CONFERINDO...\n");
  104.             sleep(2);
  105.             if (k > (*q)->qtd_po)
  106.             {
  107.                 printf("\nnao tem essa quantidade no momento \n");
  108.                 (*q)->size--;
  109.                
  110.             }else
  111.             {
  112.                 sleep(1);
  113.                 printf("\nCliente %d: Comprou %d de Cocaina \n",x,k);
  114.                 (*q)->qtd_po = (*q)->qtd_po -k;
  115.                 lucro1= lucro1=20*k;
  116.                 (*q)->size=(*q)->size+1*k;
  117.                
  118.             }
  119.            
  120.         }else if (r == 3)
  121.         {
  122.             k= rand() %10;
  123.             printf("Cliente: %d Quer: %d Pedra \n",x,k);
  124.             printf("CONFERINDO...\n");
  125.             sleep(2);
  126.            
  127.             if (k > (*q)->qtd_crack)
  128.             {
  129.                 printf("\n[!]nao tem essa quantidade no momento \n");
  130.                 (*q)->len--;
  131.    
  132.             }else
  133.             {
  134.                 sleep(1);
  135.                 printf("\n[+] CLIENTE %d: COMPROU %d quantidade de Crack \n",x,k);
  136.                 (*q)->qtd_crack = (*q)->qtd_crack-k;
  137.                 lucro2= lucro2+5*k;
  138.                 (*q)->len=(*q)->len+1*k;
  139.             }
  140.            
  141.         }else if (r ==0)
  142.         {
  143.             sleep(2);
  144.             printf("....");
  145.         }
  146.        
  147.     }
  148.     printf("%d \n",(*q)->xlen);
  149.     return novo;
  150.        
  151. }
  152.  
  153. void show(queue **q)
  154. {
  155.    
  156.     printf("\n\t---------------------------");
  157.     printf("\n\t|MACONHA | COCAINA | CRACK |");
  158.     printf("\n\t|--------|---------|-------|");
  159.     printf("\n\t|QUANTIDADE| QUANTIDADE | QUANTIDADE |");
  160.     printf("\n\t|   %d   |    %d    |   %d   |",(*q)->xlen,(*q)->size,(*q)->len);
  161.     printf("\n\t| LUCROS |  LUCROS  | LUCROS |");
  162.     printf("\n\t|----------------------------");
  163.     printf("\n\t|   %d   |    %d    |   %d   |",lucro,lucro1,lucro2);
  164.     printf("\n\t|----------------------------|");
  165.    
  166. }
  167.  
  168.  
  169. int main()
  170. {
  171.     queue *q = queue_create();
  172.     int opc,po,mac,cra;
  173.    
  174.     if (q != NULL)
  175.         for(;;){
  176.             printf("\n\t_(0)--------- [ SAIR ]");
  177.             printf("\n\t_(1)--------- [ Enfileirar ] ");
  178.             printf("\n\t_(2)--------- [ TABELA DE LUCROS ] \n");
  179.             printf("> "); scanf("%d",&opc);
  180.            
  181.             switch(opc){
  182.                 case 0:
  183.                     exit( 0 );
  184.                 case 1:
  185.                     printf("\nDIGITE A quantidade dos produtos a ser inseridos \n");
  186.                     printf("PO: "); scanf("%d",&po);
  187.                     printf("\n\tMACONHA: "); scanf("%d",&mac);
  188.                     printf("\n\tCRACK: "); scanf("%d",&cra);
  189.                     q=enfileirar(&q,po,mac,cra);
  190.                     break;
  191.                 default:
  192.                     break;
  193.                 case 2:
  194.                     show(&q);
  195.                     break;
  196.                
  197.             }
  198.            
  199.         }
  200.         return 0;
  201.        
  202. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement