https://github.com/yapeansa/simulacao_fila
Trabalho Simulação Fila
https://github.com/yapeansa/simulacao_fila
c data-structures queue
Last synced: about 1 year ago
JSON representation
Trabalho Simulação Fila
- Host: GitHub
- URL: https://github.com/yapeansa/simulacao_fila
- Owner: yapeansa
- Created: 2024-12-06T14:24:28.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-01-24T11:08:44.000Z (over 1 year ago)
- Last Synced: 2025-02-07T13:26:50.374Z (over 1 year ago)
- Topics: c, data-structures, queue
- Language: C
- Homepage:
- Size: 25.4 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Simulação de Filas
Simulação de Filas: Modificar o código pegando os parâmetros do problema (probabilidades). Gerar dados em arquivo (para importação para planilha e fazer gráficos) sobre tempo de atendimento, ocorrências de fila cheia e número de clientes atendidos. A seguir está um resumo das implementações feitas no código base do trabalho.
## Função Principal `main()`
Inicialmente pede-se ao usuário dois parâmetros, sendo o primeiro relativo ao sorteio do tempo de chagada do cliente (de 1 até 10) e o segundo relativo ao sorteio do tempo de atendimento para os clientes (de 0 até 10).
Em seguida, iniciamos um loop que será executado até que haja 0 ocorrências de fila cheia em alguma fila. Cada iteração desse loop é referente à uma fila específica e para cada uma delas é gerado um arquivo para o registro das informações. Além disso, o loop estabelece as condições iniciais para uma fila, envolvendo as funções `initFila()`, `initGuiche()`, e variáveis para tempo, contagem de fila cheia e contagem de tempo de atendimento de clientes.
Logo em seguida, no interior do loop anterior, inicia-se um novo loop. Esse novo loop, que representa a fila, é executado do tempo 0 até o tempo 100. A cada tempo t, duas funções são executadas: `trataCliente()` e `trataGuiche()`. A função trataCliente() recebe dois parâmetros: a fila e o parâmetro fornecido pelo usuário para o sorteio da chegada de clientes. Já a função trataGuiche(), recebe três parâmetros: o guichê, a fila e um parâmetro fornecido pelo usuário para sorteio do tempo de atendimento. Além disso, imprime-se na tela informações como tempo e os elementos a fila. Após o loop, escreve-se em arquivo informações sobre o número de atendimentos para determinada fila e a contagem de ocorrências de fila cheia. Além disso, o arquivo é fechado e libera-se a memória que foi alocada para o guichê e para a fila.
## Função `initFila()`
A função initFila() recebe por parâmetro a fila (por referência). Esta função é responsável por alocar memória dinâmicamente para a fila e inicializá-la, isto é, inicializa o campo `fim` com o valor 0.
## Função `initGuiche()`
A função initGuiche() recebe por parâmetro o guichê (também por referência). Então a memória é alocada dinamicamente para o guichê e os campos `atendimentos` e `ocupado` são ambos inicializados com o valor 0.
## Função `trataCliente()`
A função trataCliente() é responsável por sortear a chegada de clientes...
## Função `trataGuiche()`
Esta função é responsável pelo atendimento aos clientes. Ela pega um elemento da fila toda vez que a mesma está não vazia. Quando um cliente é atendido, é sorteado um tempo de atendimento para o mesmo (variando de um mínimo 2 até um máximo 10, dependendo do parâmetro fornecido pelo usuário), e o tempo de atendimento começa a ser cronometrado por meio de uma varivável (contador).
## `liberaFila()`
Precisamos liberar a memória alocada dinamicamente para cada fila na execução do primeiro loop da função principal. Desta forma, a função liberaFila() recebe como parâmetro a fila para que a memória seja desalocada.
## `liberaGuiche()`
Do mesmo modo precisamos deslocar a memória alocada para o guichê. A função em questão recebe como parâmetro o guichê para a memória seja liberada.