Advertisement
FoxTuGa

Hipermercado.V2

Jan 10th, 2012
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.65 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <conio.h>
  4.  
  5. #define MAX_CAIXAS 25
  6. #define MAX_CLIENTS 10
  7. #define ON 1
  8. #define OFF 0
  9.  
  10. typedef struct {
  11.     int artigos;
  12.     int tempo;
  13. }tagCliente;
  14. typedef struct {
  15.     int status;
  16.     int clientes_atendidos;
  17.     int artigos_processados;
  18.     int clientes_actuais;
  19.     tagCliente *pCliente[MAX_CLIENTS];
  20. }tagCaixa, *pTagCaixa;
  21.  
  22. void Incializar_Caixas(tagCaixa *pCaixas, int option);
  23. void Entrada_Cliente(tagCaixa *pCaixas[], int *n_caixas);
  24. int Less_Clientes(tagCaixa *pCaixa[], int n_caixas, int caixa);
  25. void Criar_Caixa(tagCaixa *pCaixa);
  26. void Avancar_Pos(tagCaixa *pCaixa);
  27. int Contar_Clientes(tagCaixa *pCaixas[]);
  28.  
  29. int main() {
  30.     char c = '\0';
  31.     int n_caixas, idx, id, artg, num_totais;
  32.     tagCaixa *pCaixas[MAX_CAIXAS];
  33.  
  34.     pCaixas[0] = (pTagCaixa)malloc(sizeof(tagCaixa));
  35.     Incializar_Caixas(pCaixas[0], ON);
  36.  
  37.     idx=0;
  38.     while(c != 't') {
  39.         if(!_kbhit()) {
  40.             c = getch();
  41.             if( c == 'c' ) {
  42.                 Entrada_Cliente(pCaixas, &n_caixas);
  43.             }
  44.             else if( c == 't' ) {
  45.                 num_totais = Contar_Clientes(pCaixas);
  46.             }
  47.         }
  48.  
  49.         artg = (pCaixas[idx]->pCliente[0]->artigos/2)+1;
  50.         for(id=0;id != artg;id++);
  51.         Avancar_Pos(pCaixas[idx]);
  52.         idx++;
  53.         pCaixas[idx]->clientes_actuais--;
  54.         pCaixas[idx]->artigos_processados += pCaixas[idx]->pCliente[0]->artigos;
  55.         if( idx == 25 )
  56.             idx = 0;
  57.     }
  58.  
  59.     return 0;
  60. }
  61. void Incializar_Caixas(tagCaixa *pCaixas, int option) {
  62.     // option 1 or 0;
  63.     // 0 - off; 1 - on,
  64.     pCaixas->status = option;
  65. }
  66. void Entrada_Cliente(tagCaixa *pCaixas[], int *n_caixas) {
  67.     int n_artigos, caixa_menor, caixa;
  68.  
  69.     printf("\tCriar Cliente\n\n");
  70.     printf("\nNumero de Artigos: ");
  71.     scanf("%d", &n_artigos);
  72.  
  73.     caixa_menor = Less_Clientes(pCaixas, *n_caixas, caixa);
  74.     if(caixa_menor > 5 && *n_caixas < 25) {
  75.         Criar_Caixa(pCaixas[*n_caixas]);
  76.         pCaixas[*n_caixas]->pCliente[0]->artigos = n_artigos;
  77.         *n_caixas+=1;
  78.     }
  79.     else {
  80.         pCaixas[caixa]->pCliente[caixa_menor]->artigos = n_artigos;
  81.     }
  82.     pCaixas[caixa]->clientes_actuais++;
  83. }
  84. int Less_Clientes(tagCaixa *pCaixa[], int n_caixas, int caixa) {
  85.     int idx, max, actual;
  86.     max = 0;
  87.  
  88.     for(idx=0; idx < n_caixas; idx++) {
  89.         actual = pCaixa[idx]->clientes_actuais;
  90.         if( max == 0 || actual < max ) {
  91.             max = actual;
  92.             caixa = idx;
  93.         }
  94.     }
  95.     return max;
  96. }
  97. void Criar_Caixa(tagCaixa *pCaixa) {
  98.     pCaixa = (pTagCaixa)malloc(sizeof(tagCaixa));
  99. }
  100. void Avancar_Pos(tagCaixa *pCaixa) {
  101.     int idx;
  102.     for(idx=0; idx<10; idx++) {
  103.         pCaixa->pCliente[idx] = pCaixa->pCliente[idx+1];
  104.     }
  105. }
  106. int Contar_Clientes(tagCaixa *pCaixas[]) {
  107.     int idx, conta=0;
  108.     for(idx=0; idx < MAX_CAIXAS; idx++)
  109.         conta += pCaixas[idx]->artigos_processados;
  110.     return conta;
  111. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement