Questão 49: maisCentral
VoltarConsidere o seguinte tipo para representar a posição de um robot numa grelha.
typedef struct posicao {
int x, y;
} Posicao;
Defina a função int maisCentral (Posicao pos[], int N)
que, dado um array com N
posições, determina o índice da posição que está mais perto da origem (note que as coordenadas de cada ponto são números inteiros).
Exemplo
> Posicao pos[4] = { {2,3}, {0,4}, {-2,1}, {3,-1} };
> maisCentral(pos, 4)
(int) 2 // correspondente a {-2,1}
Resolução
#include <stdlib.h>
#define manDist(x1,y1,x2,y2) abs(x1 - x2) + abs(y1 - y2)
int maisCentral (Posicao pos[], int N) {
int minDist = manDist(pos[0].x, pos[0].y, 0, 0);
int ans = 0, i, dist;
for(i = 1; i < N; i++) {
if((dist = manDist(pos[i].x, pos[i].y, 0, 0)) < minDist) {
ans = i;
minDist = dist;
}
}
return ans;
}