TF1
Arquitetura
Trabalho II
LUCIA FILOMENA DE ALMEIDA GUIMARAES
Alunos:
Erika Costa RA: 11737616 Glaucia B. Latorre RA: 06108711 Eder Gomes (se permitido)
Campinas
2012
Codigo :
Opcionais:
Valor; 5
#include <stdio.h>
#include <stdlib.h>
#define NUM_CAB 5
#define MAX(x,y) (((x) > (y))? (x) : (y)) typedef struct fila
{
int numero; int t2; int tsaida; struct fila *prox; struct fila *prev;
} fila;
int t1,NumCliente,t3; float TamMedio; fila *Inic[NUM_CAB],*Fim[NUM_CAB]; int random(int n)
{
return rand() % n;
}
void tempo_de_espera(int n)
{
t3 =1+rand()%2;
}
void entrar_na_fila(int n)
{
fila *p; NumCliente++; p = (fila *)calloc(1,sizeof(fila)); p->numero = NumCliente; p->t2 =1+rand()%4; 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;
}
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)
{
int i,nf,linha,chegada; chegada = 0; printf("+-------+---------+------+--------+--------+-------+\n"); printf("| Tempo | Cliente | Fila | Espera | Atend. | Saida |\n"); printf("+-------+---------+------+--------+--------+-------+\n"); for (t1