Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <conio.h>
- #define MAX_CAIXAS 25
- #define MAX_CLIENTS 10
- #define ON 1
- #define OFF 0
- typedef struct {
- int artigos;
- int tempo;
- }tagCliente;
- typedef struct {
- int status;
- int clientes_atendidos;
- int artigos_processados;
- int clientes_actuais;
- tagCliente *pCliente[MAX_CLIENTS];
- }tagCaixa, *pTagCaixa;
- void Incializar_Caixas(tagCaixa *pCaixas, int option);
- void Entrada_Cliente(tagCaixa *pCaixas[], int *n_caixas);
- int Less_Clientes(tagCaixa *pCaixa[], int n_caixas, int caixa);
- void Criar_Caixa(tagCaixa *pCaixa);
- void Avancar_Pos(tagCaixa *pCaixa);
- int Contar_Clientes(tagCaixa *pCaixas[]);
- int main() {
- char c = '\0';
- int n_caixas, idx, id, artg, num_totais;
- tagCaixa *pCaixas[MAX_CAIXAS];
- pCaixas[0] = (pTagCaixa)malloc(sizeof(tagCaixa));
- Incializar_Caixas(pCaixas[0], ON);
- idx=0;
- while(c != 't') {
- if(!_kbhit()) {
- c = getch();
- if( c == 'c' ) {
- Entrada_Cliente(pCaixas, &n_caixas);
- }
- else if( c == 't' ) {
- num_totais = Contar_Clientes(pCaixas);
- }
- }
- artg = (pCaixas[idx]->pCliente[0]->artigos/2)+1;
- for(id=0;id != artg;id++);
- Avancar_Pos(pCaixas[idx]);
- idx++;
- pCaixas[idx]->clientes_actuais--;
- pCaixas[idx]->artigos_processados += pCaixas[idx]->pCliente[0]->artigos;
- if( idx == 25 )
- idx = 0;
- }
- return 0;
- }
- void Incializar_Caixas(tagCaixa *pCaixas, int option) {
- // option 1 or 0;
- // 0 - off; 1 - on,
- pCaixas->status = option;
- }
- void Entrada_Cliente(tagCaixa *pCaixas[], int *n_caixas) {
- int n_artigos, caixa_menor, caixa;
- printf("\tCriar Cliente\n\n");
- printf("\nNumero de Artigos: ");
- scanf("%d", &n_artigos);
- caixa_menor = Less_Clientes(pCaixas, *n_caixas, caixa);
- if(caixa_menor > 5 && *n_caixas < 25) {
- Criar_Caixa(pCaixas[*n_caixas]);
- pCaixas[*n_caixas]->pCliente[0]->artigos = n_artigos;
- *n_caixas+=1;
- }
- else {
- pCaixas[caixa]->pCliente[caixa_menor]->artigos = n_artigos;
- }
- pCaixas[caixa]->clientes_actuais++;
- }
- int Less_Clientes(tagCaixa *pCaixa[], int n_caixas, int caixa) {
- int idx, max, actual;
- max = 0;
- for(idx=0; idx < n_caixas; idx++) {
- actual = pCaixa[idx]->clientes_actuais;
- if( max == 0 || actual < max ) {
- max = actual;
- caixa = idx;
- }
- }
- return max;
- }
- void Criar_Caixa(tagCaixa *pCaixa) {
- pCaixa = (pTagCaixa)malloc(sizeof(tagCaixa));
- }
- void Avancar_Pos(tagCaixa *pCaixa) {
- int idx;
- for(idx=0; idx<10; idx++) {
- pCaixa->pCliente[idx] = pCaixa->pCliente[idx+1];
- }
- }
- int Contar_Clientes(tagCaixa *pCaixas[]) {
- int idx, conta=0;
- for(idx=0; idx < MAX_CAIXAS; idx++)
- conta += pCaixas[idx]->artigos_processados;
- return conta;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement