Fila banco c++
#include
#include
#include
#include
#define tamanho 10000
struct fila{ int inicio; int fim; int item[tamanho];
};
void criarFila(fila &f){ f.inicio = 0; f.fim = 0;
}
bool filaVazia(fila f){ if (f.inicio == f.fim) return true; else return false;
}
bool filaCheia(fila f){ if (f.fim > tamanho) return true; else return false;
}
void inserirFila(fila &f, int x){ if(!filaCheia(f)){ f.item[f.fim] = x; f.fim++; }
}
int removerFila(fila &f){ int aux; if(!filaVazia(f)){ aux = f.item[f.inicio]; f.inicio++; return aux; }
}
int main() { int totalClientes = 0; int tempoTotalEspera = 0; int cronometro = 0; int periodo = 0; fila clientes; int caixas[3] = {0, 0, 0}; int tempoTotalAtendimento = 0; int tempoMedioEspera = 0; coutperiodo; while (periodo > cronometro || (caixas[0] > 0 || caixas[1] > 0 || caixas[2] > 0) || !filaVazia(clientes)) { //se o banco estiver em horário de funcionamento, sorteia a entrada de um cliente no banco if (periodo > cronometro) { int numeroSorteado = rand()%3; //sorteio com probabilidade de 1 a cada 3 clientes if (numeroSorteado == 0) { inserirFila(clientes, cronometro); totalClientes++; }
} //testando se os caixas estão livres
//testa se o caixa 0 está livre if (caixas[0] == 0) { //se existir cliente na fila, direcione o cliente ao caixa 0 if (!filaVazia(clientes)) { //retira o cliente da fila int cliente = removerFila(clientes); //soma total de tempo de espera tempoTotalEspera += cronometro - cliente; //sorteia a funcao