unsigned char set_av( struct Aviao av[], unsigned char d, unsigned char p, unsigned char disp){ unsigned char m1 = 0; unsigned char m2 = 10; if(d == 1){ av[disp].id=p+1; av[disp].dir=1; av[disp].x = m1; av[disp].y=238; av[disp].z=20; av[disp].vel=8; av[disp].bum = 1; av[disp].ex = 0; if(disp > 4){av[disp].ex = 1;} print_av(av[disp]); } if(d > 1){ av[disp].id = p+1; av[disp].dir = 2; av[disp].x = m2; av[disp].y = 238; av[disp].z = 20; av[disp].vel = 8; av[disp].bum = 2; av[disp].ex = 0; if(disp > 4){av[disp].ex = 1;} print_av(av[disp]); } return 1; } /***************/
void print_arg(pid_t pid, unsigned int pos, struct user_regs_struct regs, unsigned long long av) { if (strlen(g_tab_syscall[(int)regs.orig_rax].token) < pos) return ; if (pos > 0 && pos != (unsigned int)g_tab_syscall[(int)regs.orig_rax].avg) printf(", "); if (g_tab_syscall[(int)regs.orig_rax].token[pos] == '1') print_av(av); else if (g_tab_syscall[(int)regs.orig_rax].token[pos] == '2') print_arg_string(pid, regs, av); else if (g_tab_syscall[(int)regs.orig_rax].token[pos] == '3') { if (av == 0) printf("NULL"); else{ print_av(av); } } else if (g_tab_syscall[(int)regs.orig_rax].token[pos] == '0') printf("void"); else if (g_tab_syscall[(int)regs.orig_rax].token[pos] == '4') printf("%c", (char)av); }
//----------------------------------------------------------// // Execução do desenvolvimento //----------------------------------------------------------// void main() { unsigned char i =0, t = 0, j = 0, k = 0, p = 0, e = 0, sub = 0, sum = 1, m = 0, dir = 0, excesso = 0, d_1 = 0, d_2 = 1, s = 0, r =0, disponivel = 0; while (1) { struct Aviao av[12]; //desses 12 só 5 aviao entra no CTA if(p > 5){ for (r=0; r < 12; r++){ if(av[r].id == 0){ disponivel = r; break;} } } else {disponivel = p;} //insere aviao manualmente sentido Norte -> Sul if(!A1) i=0; if (A1 && i < 1){ set_av(av, 1, p, disponivel); B1 = 1; i = 1; p += 1; } /*********/ //insere aviao manualmente sentido Sul -> Norte if(!A2) t = 0; if (A2 && t < 1){ set_av(av, 2, p, disponivel); B1 = 1; t = 1; p += 1; }/*********/ //Imprime o status atualizado de todas aeronaves if(A3){ for(i=0; i < 12; i++){ printf("\n"); desloc_av(av,i); //simula deslocamento if(!A0){ colisao_av(av); } if(av[0].id ==0 && av[1].id ==0 && av[2].id ==0 && av[3].id ==0 && av[4].id ==0){ printf("\nCTA Vazio"); B1 =0; } // print_av(av[i]);// relatorio de aeronaves if(av[i].ex == 1){ B0 = 1; printf("\n\nAeronave %d suba ate sair do CTA\n",av[i].id); if(av[i].ex == 1){ sub += 1; subir_av(av,i,sub); av[i].ex = 2; B0 = 0;} if(sub > 4){ sub = 5; } } if(av[i].ex == 2 ){ e = av[i].id; dir = av[i].dir; for(m = 0; m < 10; m++){ if(m < 5 && av[m].id == 0){ if(e > 0 && av[i].ex == 2){ printf("\n\nAviao:%d desca para o CTA\n",e); descer_av(av,m,e,dir); sub -= 1; e = 0; } av[i].ex = 0; } if(av[m].dir == 1 && av[m].x == 10 && av[m].id > 0){ del_av(av,m); d_1 = av[m].x; } if(av[m].dir == 2 && av[m].x == 0 && av[m].id > 0){ del_av(av,m); d_2 = av[m].x; } } } if(av[i].dir == 1 && av[i].x == 10 && av[i].id > 0){ del_av(av,i); } if(av[i].dir == 2 && av[i].x == 0 && av[i].id > 0){ del_av(av,i); } } }/************/ if(A3){ if(!vai_colidir_av(av, A0) && B1 == 1){ printf("Atualizacao:\n\nRotas sem risco de colisao\n"); } } /**GARANTINDO A LIBEAÇÃO DE ESPAÇO DE MEMÓRIA NO VETOR**/ for(s=0; s < 12; s++){ if (av[s].id == 0){ av[s].id= 0, av[s].dir= 0, av[s].x= 0, av[s].y= 0, av[s].z= 0; av[s].vel= 0, av[s].ex= 0; av[s].bum= 0; } if (A3){ ordem_av(av,s); //evita aviao no mesmo ponto x print_av(av[s]); // Atualiza relatorio } } /**SÓ APÓS CHECAR EXPLOSAO**/ if (A7){ B3=0; } }//fim while }//fim main