Untitled
unknown
c_cpp
3 years ago
3.8 kB
3
Indexable
#define tempoParado 15 #define tempoMovendo 5 int tempoAtenderChamada (Elevador *elevador, int andar, int direcao) { int tempo = 0; switch (elevador->estado) { case 0: { if (vaziaFila(elevador->destino)) { if (elevador->andar_atual < andar) { for (int i = elevador->andar_atual; i <= andar; i++) tempo += tempoMovendo; return tempo; } else if (elevador->andar_atual > andar) { for (int i = elevador->andar_atual <= andar; i >= andar; i--) { tempo += tempoMovendo; } return tempo; } else return 0; } else { if (elevador->andar_atual < elevador->destino->fim->andar) { for (int i = elevador->andar_atual; i <= elevador->destino->fim->andar; i++) { if (buscaNodo(elevador->destino, i) != NULL) tempo += tempoParado; else tempo += tempoMovendo; } } else if (elevador->andar_atual > elevador->destino->fim->andar) { for (int i = elevador->andar_atual; i >= elevador->destino->fim->andar; i--) { if (buscaNodo(elevador->destino, i) != NULL) tempo += tempoParado; else tempo += tempoMovendo; } } return tempo; } } case 1: { if (elevador->andar_atual < andar) { for (int i = elevador->andar_atual; i <= andar; i++) { if (buscaNodo(elevador->destino, i) != NULL) tempo += tempoParado; else tempo += tempoMovendo; } return tempo; } else if (elevador->andar_atual > andar) { for (int i = elevador->andar_atual; i >= elevador->destino->fim->andar; i--) { if (buscaNodo(elevador->destino, i) != NULL) tempo += tempoParado; else tempo += tempoMovendo; } return tempo; } else return 0; } case 2: { if (elevador->andar_atual < andar) { for (int i = elevador->andar_atual; i >= elevador->destino->fim->andar; i--) { if (buscaNodo(elevador->destino, i) != NULL) tempo += tempoParado; else tempo += tempoMovendo; } return tempo; } else if (elevador->andar_atual > andar) { for (int i = elevador->andar_atual; i <= andar; i++) { if (buscaNodo(elevador->destino, i) != NULL) tempo += tempoParado; else tempo += tempoMovendo; } return tempo; } else return 0; } } } Elevador *elevadorMaisProx(Elevador **elevador, int numElevadores, int andar, int direcao) { Elevador *maisProx = elevador[0]; int menorTempo = tempoAtenderChamada(elevador[0], andar, direcao); //puts("done"); for (int i = 1; i < numElevadores; i++) { if (tempoAtenderChamada(elevador[i], andar, direcao) < menorTempo) { maisProx = elevador[i]; menorTempo = tempoAtenderChamada(elevador[i], andar, direcao); } } return maisProx; }
Editor is loading...