void nomeVoo (No *lista) /*gera o nome dos voos*/ { No *p; for(p = lista; p != NULL; p = p -> anterior) /*itera por toda lista para inserir os nomes*/ { if(p -> estado == 'A') { p -> nome[0] = 'A'; p -> nome[1] = 'B'; } else { p -> nome[0] = 'C'; p -> nome[1] = 'D'; } p -> nome[2] = geraRand(48,57); /*na tabela asc os numeros de 48 a 57*/ p -> nome[3] = geraRand(48,57); /*sao caracteres de numeros*/ p -> nome[4] = geraRand(48,57); /*desse modo aqui esta sendo adicionado */ p -> nome[5] = geraRand(48,57); /*numeros a string nome*/ p -> nome[6] = '\0'; /*encerra a string como sempre*/ } }
int main() { /*VARIAVEIS*/ int Naproximacao; /*recebe o numero de aproximacoes*/ int Ndecolagem; /*recebe o numero de docolagens*/ /*declaracao dos voos*/ No *voos; /*declaracao das pistas*/ Fila *pista1; Fila *pista2; Fila *pista3; /*aloca memoria*/ pista1 = malloc(sizeof(Fila)); /*somente dec*/ pista2 = malloc(sizeof(Fila)); /*dec e ater*/ pista3 = malloc(sizeof(Fila)); /*dec e ater*/ voos = malloc(sizeof(No)); /*FUNCOES*/ criaLista(voos); /*cria a lista com as informacoes*/ criaPista(pista1);/*cria a pista 1*/ criaPista(pista2);/*cria a pista 2*/ criaPista(pista3);/*cria a pista 3*/ srand(time(NULL));/*pega a hora a sua como base para calculos aleatorios*/ Naproximacao = geraRand(0, 26); /*define o numero de proximacoes que terao no programa*/ Ndecolagem = geraRand(0, 16); /*define o numero de decolagens que terao no programa*/ voos = geraVoos(Naproximacao,voos, 1); /*perceber que aqui temos o final da lista entao o proximo e NULL*/ voos = geraVoos(Ndecolagem,voos, 2); /*perceber que aqui temos o final da lista entao o proximo e NULL*/ nomeVoo(voos); /*gera os nomes dos voos*/ mostra(voos); preenchePistas(voos, pista1, pista2, pista3); /*clear();*/ liberaPistas(pista1, pista2, pista3); return 0; }
No* insereLista (int estado, No *lista) { No *temp; if (lista -> comb == -1) /*testa se a lista esta vazia*/ { if (estado == 1) { lista -> estado = 'A'; }/*atribui o estado do aviao*/ else { lista -> estado = 'D'; } lista -> comb = geraRand(0,12); return lista; }/*testa se a lista esta vazia*/ temp = malloc(sizeof(No));/*aloca memoria para o ponteiro */ temp -> comb = geraRand(0,12);/*insere o combustivel aleatoriamente*/ if(estado == 1) { temp -> estado = 'A'; } else { temp -> estado = 'D'; } temp -> proximo = lista -> proximo;/*aponta no sentido do final*/ temp -> anterior = lista;/*aponta no sentido do inicio*/ lista -> proximo = temp; /*faz o apontamento*/ return temp; }
int main() { time_t hora; struct tm *timeinfo; int Nvoos; int Ndecolagens; int Npousos; char codigo_voo[7]; char tipo_voo; int combustivel_voo; int aviso_voo; int pista_voo = 1; char codigos[64][7] = {"VG3001", "JJ4404", "LN7001", "TG1501", "GL7602", "TT1010", "AZ1009", "AZ1008", "AZ1010", "TG1506", "VG3002", "JJ4402", "GL7603", "RL7880", "AL0012", "TT4544", "TG1505", "VG3003", "JJ4403", "JJ4401", "LN7002", "AZ1002", "AZ1007", "GL7604", "AZ1006", "TG1503", "AZ1003", "JJ4403", "AZ1001", "LN7003", "AZ1004", "TG1504", "AZ1005", "TG1502", "GL7601", "TT4500", "RL7801", "JJ4410", "GL7607", "AL0029", "VV3390", "VV3392", "GF4681", "GF4690", "AZ1020", "JJ4435", "VG3010", "LF0920", "AZ1065", "LF0978", "RL7867", "TT4502", "GL7645", "LF0932", "JJ4434", "TG1510", "TT1020", "AZ1098", "BA2312", "VG3030", "BA2304", "KL5609", "KL5610", "KL5611"}; srand(time(NULL)); //Gerador de número de vôos, pousos e decolagens Nvoos = geraRand (0, 64); Ndecolagens = geraRand (0, Nvoos); Npousos = Nvoos - Ndecolagens; int voos = 0; int dec = Ndecolagens; int pouso = Npousos; FILA fila = cria_fila(); for(voos = 1; voos <= Nvoos; voos++){ strcpy(codigo_voo, codigos[voos]); if(pouso > 0 && dec >0){ if(geraRand(0,1)){ tipo_voo = 'D'; dec--; combustivel_voo = geraRand (24, 48); pista_voo = ((voos-1)%3)+1; } else{ tipo_voo = 'P'; pouso--; combustivel_voo = geraRand (0, 12); if (combustivel_voo == 0) aviso_voo = 1; else aviso_voo = 0; pista_voo = ((voos - 1)%3) + 1; if(pista_voo == 3 && tipo_voo == 'P' && aviso_voo == 0){ pista_voo = ((voos)%3) + 1; } } } else if (pouso == 0 && dec !=0){ tipo_voo = 'D'; dec--; combustivel_voo = geraRand (24, 48); pista_voo = ((voos-1)%3) + 1; } else if (pouso != 0 && dec == 0){ tipo_voo = 'P'; pouso--; combustivel_voo = geraRand (0, 12); if (combustivel_voo == 0){ aviso_voo = 1; } else{ aviso_voo = 0; } pista_voo = ((voos - 1)%3) + 1; if(pista_voo == 3 && tipo_voo == 'P' && aviso_voo == 0){ pista_voo = ((voos)%3) + 1; } } insere_fila(fila, codigo_voo, tipo_voo, combustivel_voo, aviso_voo, pista_voo); } printf ("\n Aeroporto Internacional de Brasilia\n"); hora = time(NULL); timeinfo = localtime(&hora); printf(" Hora atual: %02d:%02d:%02d\n", timeinfo->tm_hour, timeinfo->tm_min, timeinfo->tm_sec); printf(" Fila de pedidos:\n"); printf(" Nvoos: %d\n", Nvoos); printf(" Ndecolagens: %d\n", Ndecolagens); printf(" Npousos: %d\n\n", Npousos); printf(" Fila designada (na ordem) por pistas:\n\n"); printf(" ******Pista 1:******\n Pousos:\n\n"); ver_fila(fila, 'P', 1); printf("\n Decolagens:\n\n"); ver_fila(fila, 'D', 1); printf("\n ******Pista 2:******\n Pousos:\n\n"); ver_fila(fila, 'P', 2); printf("\n Decolagens:\n\n"); ver_fila(fila, 'D', 2); printf("\n ******Pista 3:******\n Pousos:\n\n"); ver_fila(fila, 'P', 3); printf("\n Decolagens:\n\n"); ver_fila(fila, 'D', 3); printf("\n"); libera_fila (fila); return 0; }