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 *prox;
- struct No *inicio;
- struct No *fim;
- }fila;
- int tam=0;
- int random_id()
- {
- /* funçãão que retorna um numero aleatorio */
- srand(time(NULL) *5);
- return rand() % 1000;
- }
- fila *fila_cria(void)
- {
- fila *p = (fila *) malloc(sizeof(fila));
- if (p == NULL)
- fprintf(stderr,"erro");
- else
- p->inicio = NULL;
- p->fim = NULL;
- p->size =0;
- return p;
- }
- bool isEmpty(fila *f)
- {
- return (f->prox == NULL);
- }
- bool inserir(fila *f,int p,int IdAviao)
- {
- fila *no = (fila *) malloc(sizeof(fila));
- if (no == NULL)
- fprintf(stdout," err ");
- no->x =p;
- no->pista[p] = IdAviao;
- no->prox = NULL;
- if (isEmpty(no)){ /* se a fila estiver vazia */
- printf("vazia \n");
- f->prox= no;
- no->pista[p] = IdAviao;
- }else{ /* se nao */
- fila *tmp;
- tmp = f->prox;
- while(tmp->prox != NULL)
- no->pista[p] = IdAviao;
- tmp = tmp->prox;
- tmp->prox = no; /* novo nóó que vai ser alocado */
- }
- tam++;
- f->fim =no;
- return true;
- }
- void imprime(fila **f)
- {
- fila *p;
- p = (*f)->prox;
- int y;
- for(y=0; y <= tam; y++){
- printf("%d [%d] \n",p->x,p->pista[0]);
- }
- }
- 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 _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();
- 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:
- checkar_pista(f);
- break;
- case 4:
- _pouso_(f,id);
- default:
- break;
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement