Advertisement
luciana1237

Untitled

Jul 20th, 2018
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.98 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <stdbool.h>
  4. #include <time.h>
  5.  
  6. #define MAX 3
  7.  
  8. typedef struct No {
  9.     int x,size,pista[MAX];
  10.    
  11.     struct No *prox;
  12.     struct No *inicio;
  13.     struct No *fim;
  14.  
  15. }fila;
  16.  
  17. int tam=0;
  18.  
  19. int random_id()
  20. {
  21.     /* funçãão que retorna um numero aleatorio */
  22.     srand(time(NULL) *5);
  23.  
  24.     return rand() % 1000;
  25. }
  26.  
  27. fila *fila_cria(void)
  28. {
  29.     fila *p = (fila *) malloc(sizeof(fila));
  30.    
  31.     if (p == NULL)
  32.         fprintf(stderr,"erro");
  33.     else
  34.         p->inicio = NULL;
  35.         p->fim = NULL;
  36.         p->size =0;
  37.     return p;
  38. }
  39.  
  40. bool isEmpty(fila *f)
  41. {
  42.     return (f->prox == NULL);
  43. }
  44.  
  45. bool inserir(fila *f,int p,int IdAviao)
  46. {
  47.     fila *no = (fila *) malloc(sizeof(fila));
  48.    
  49.     if (no == NULL)
  50.         fprintf(stdout," err ");
  51.    
  52.     no->x =p;
  53.     no->pista[p] = IdAviao;
  54.     no->prox = NULL;
  55.    
  56.     if (isEmpty(no)){ /* se a fila estiver vazia */
  57.         printf("vazia \n");
  58.         f->prox= no;
  59.     }else{ /* se nao */
  60.         fila *tmp;
  61.         tmp = f->prox;
  62.         while(tmp->prox != NULL)
  63.             //f->pista[tam] = no;
  64.             tmp = tmp->prox;
  65.             tmp->prox = no; /* novo nóó que vai ser alocado */
  66.        
  67.     }
  68.     tam++;
  69.     f->fim =no;
  70.    
  71.    
  72.     return true;
  73. }
  74.  
  75. void imprime(fila **f)
  76. {
  77.    fila *p;
  78.    p = (*f)->prox;
  79.    int y;
  80.  
  81.    for(y=0; y <= tam; y++){
  82.        printf("%d %d \n",(*f)->x,(*f)->pista[y]);
  83.    }
  84. }
  85. bool checkar_pista(fila *f)
  86. {
  87.     fila *no;
  88.     int count=0;
  89.  
  90.     if (!isEmpty(f))
  91.         while(no->prox != NULL){
  92.             count++;
  93.             no = no->prox;
  94.     }
  95.  
  96.     if (count == 3)
  97.         return 0;
  98.         if (count <= 2)
  99.             return 1;
  100. }
  101.  
  102. bool _pouso_(fila *f,int aviao)
  103. {
  104.     int _n_pista,i;
  105.  
  106.     printf("\n Informe o numero da pista Para o Pouso: \n");
  107.     scanf("%d",&_n_pista);
  108.  
  109.     for(i=0; i <=2; i++){
  110.         if (f->pista[i] != 0)
  111.             printf("informe outra pista \n");
  112.         else
  113.             f->pista[_n_pista] = aviao;
  114.     }
  115.     return 1;
  116.  
  117. }
  118.  
  119.  
  120. int main()
  121. {
  122.     fila *f = fila_cria();
  123.     int num,opc,id = random_id();
  124.  
  125.     for(;;){
  126.  
  127.         printf("(0)---------------- Sair \n");
  128.         printf("(1)---------------- inserir Aviao Para Pouso\n");
  129.         printf("(2)---------------- imprimir \n");
  130.         printf("(3)---------------- checkar pista \n");
  131.         printf("(4)---------------- Pouso \n");
  132.  
  133.         printf("> "); scanf("%d",&opc);
  134.        
  135.         switch(opc){
  136.             case 1:
  137.                printf(" \n Digite o numero da pista para o Pouso \n");
  138.                printf("> "); scanf("%d",&num);
  139.                 inserir(f,num,id);
  140.                 break;
  141.             case 2:
  142.                 imprime(&f);
  143.                 break;
  144.             case 3:
  145.                 checkar_pista(f);
  146.                 break;
  147.             case 4:
  148.                  _pouso_(f,id);
  149.             default:
  150.                 break;
  151.         }
  152.     }
  153.     return 0;
  154. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement