Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <stdbool.h>
- #include <time.h>
- #define MAX 3
- typedef struct No {
- int x,size,pista[MAX];
- struct No *inicio;
- struct No *fim;
- struct No *prox;
- }fila;
- fila *fila_cria(void)
- {
- fila *f = (fila *) malloc(sizeof(fila));
- if (f != NULL)
- f->inicio = NULL;
- f->fim = NULL;
- f->size=1;
- return f;
- }
- bool isEmpty(fila *f)
- {
- return (f->inicio== NULL);
- }
- bool enfileirar(fila *f,int v)
- {
- fila *no = (fila *) malloc(sizeof(fila));
- fila *p,*aux;
- //p->size =0;
- if (no == NULL)
- fprintf(stderr,"erro");
- no->x = v;
- no->prox = NULL;
- if (isEmpty(f)){
- printf("fila vazia");
- f->inicio = no;
- }else{
- printf("nai");
- //aux = aux->prox;
- f->fim->prox = no;
- }
- f->size++;
- f->fim = no;
- return true;
- }
- void imprime(fila *f)
- {
- printf("[ %d ]",f->size);
- }
- int random_id()
- {
- /* funçao que retorna um numero aleatorio */
- srand(time(NULL) *5);
- return rand() % 1000;
- }
- bool checkar_pista(fila *f)
- {
- fila *no;
- int count=0;
- if (!isEmpty(f))
- while(no->prox != NULL){
- count++;
- no = no->prox;
- }
- if (count == 3)
- return 0;
- if (count <= 2)
- return 1;
- }
- bool time_limit(fila *f,int p,int idAviao)
- {
- fila *no;
- int y;
- no->pista[p] = idAviao;
- for(y=0; y <=60; y++){
- sleep( 1 );
- if (y == 60)
- return 0;
- else
- return 1;
- }
- }
- bool _pouso_(fila *f,int aviao)
- {
- fila *no;
- int _n_pista,i,y;
- for(y=0; y <=MAX; y++)
- printf("%d \n",no->pista[y]);
- do {
- printf("\n Informe o Numero Da Pista Para O Pouso (-1 Para Sair)\n");
- printf("> "); scanf("%d",&_n_pista);
- if (no->pista[_n_pista] != 0)
- printf("Pista Ocupada informe outra pista \n");
- else
- no->pista[_n_pista] = aviao;
- }while(_n_pista != -1);
- return 1;
- }
- int main()
- {
- fila *f = fila_cria();
- int num,opc,id = random_id(),check_lista;
- for(;;){
- printf("(0)---------------- Sair \n");
- printf("(1)---------------- inserir Aviao Para Pouso\n");
- printf("(2)---------------- imprimir \n");
- printf("(3)---------------- checkar pista \n");
- printf("(4)---------------- Pouso \n");
- printf("> "); scanf("%d",&opc);
- switch(opc){
- case 1:
- printf(" \n Digite o numero da pista para o Pouso \n");
- printf("> "); scanf("%d",&num);
- inserir(f,num,id);
- break;
- case 2:
- imprime(f);
- break;
- case 3:
- check_lista = checkar_pista(f);
- if (!check_lista){
- sleep( 2 );
- printf("Todas as Pistas Estao ocupadas no momento \n");
- }else{
- _pouso_(f,id);
- }
- break;
- case 4:
- _pouso_(f,id);
- default:
- break;
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement