Fila - caixa

Disponível somente no TrabalhosFeitos
  • Páginas : 2 (347 palavras )
  • Download(s) : 0
  • Publicado : 2 de junho de 2012
Ler documento completo
Amostra do texto
#include
#include

#define NUM_CAB 3
#define MAX(x,y) (((x) > (y))? (x) : (y))//MAX define uma expressao se x > que y então x, senão y.

typedef struct fila
{
int numero;
int t2;int tsaida;
struct fila *prox;
struct fila *prev;
} fila;

int t1, t3, NumCliente;
float TamMedio; //tamanho médio da fila.
fila *Inic[NUM_CAB],*Fim[NUM_CAB];

int random(int n)
{return rand() % n;
}

void tempo_de_espera(int n)
{

if (Inic[n] == NULL)
t3 = 0;
else
t3 = 1 + random(10);

}
//cliente entra na filavoid entrar_na_fila(int n)
{
fila *p;

NumCliente++;

p = (fila *)calloc(1,sizeof(fila));

p->numero = NumCliente;
p->t2 = 3 + random(6);

if (Inic[n] == NULL)
Inic[n] =p;
if (Fim[n] != NULL)
Fim[n]->prox = p;
p->prev = Fim[n];
p->prox = NULL;
Fim[n] = p;

// Calculo do tempo de saida
if (p->prev != NULL)
p->tsaida =MAX(t1,p->prev->tsaida) + p->t2;
else
p->tsaida = t1 + p->t2 + t3;
}
//cliente sai da fila
void sair_da_fila(int n)
{
Inic[n] = Inic[n]->prox;
}

int tamanho_fila(int n)
{
int t;
fila *p;t = 0;
p = Inic[n];
while (p != NULL)
{
t++;
p = p->prox;
}
return t;
}

int menor_fila()
{
int i,t,nfila,tfila;

nfila = 0;
tfila = tamanho_fila(0);for (i = 1; i < NUM_CAB; i++)
{
t = tamanho_fila(i);
if (t < tfila)
{
nfila = i;
tfila = t;
}
}
return nfila;
}

void simular(int minutos)
{
inti,nf,linha,chegada;

chegada = 0;

printf("+-------+---------+------+--------+--------+-------+\n");
printf("| Tempo | Cliente | Fila | Espera | Atend. | Saida |\n");printf("+-------+---------+------+--------+--------+-------+\n");

for (t1 = 1; t1 t2,Fim[nf]->tsaida);
linha = 1;
chegada = 0;
}
if (linha == 0)
printf("| | | |...
tracking img