Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void encontraArmazemMaisProximo(Encomenda *encomenda){
- int i=0;
- int j=0;
- int k=0;
- //alldrone
- printf("entrei no encontraArmazemMaisProximo\n");
- double caminhoMinimo=100000.00;
- Armazem *armazemEscolhido;
- Drone *droneEscolhifo;
- for (int i=0;i<config->numero_armazens_sistema;i++)
- {
- for (k=0;k<config->numero_drones;k++)
- {
- if(alldrones[k].busy==false)
- {
- if(calculaDistanciaTotal(encomenda->posClientX,encomenda->posClientY,memoriaPartilhada[i].posX,memoriaPartilhada[i].posY,alldrones[k].x,alldrones[k].y) < (caminhoMinimo)){
- for(int j=0;j<10;j++)
- {
- if(strcmp(memoriaPartilhada[i].produtos[j].nome,encomenda->nomeProduto) == 0)
- {
- if(memoriaPartilhada[i].produtos[j].quantidade > encomenda->quantidade)
- {
- armazemEscolhido=&memoriaPartilhada[i];
- droneEscolhifo=&alldrones[k];
- caminhoMinimo=calculaDistanciaTotal(encomenda->posClientX,encomenda->posClientY,memoriaPartilhada[i].posX,memoriaPartilhada[i].posY,alldrones[k].x,alldrones[k].y);
- }
- }
- }
- }
- }
- }
- }
- printf("escolhido o drone %d\n",&droneEscolhifo->id);
- printf("escolhido o armazem %s\n",&armazemEscolhido->nome);
- }
- double calculaDistanciaTotal(double clientX, double clientY, double armazemX, double armazemY, double droneX, double droneY){
- double distanciaDroneArmazem=0.0;
- double distanciaArmazemCliente=0.0;
- double total=0.0;
- distanciaDroneArmazem=distance(armazemX,armazemY, droneX, droneY);
- distanciaArmazemCliente=distance(armazemX,armazemY, clientX, clientY);
- total=distanciaArmazemCliente+distanciaDroneArmazem;
- return (total);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement