Questão 50: vizinhos
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 vizinhos (Posicao p, Posicao pos[], int N)
que, dada uma posição e um array com N
posições, calcula quantas dessas posições são adjacentes à posição dada.
Exemplo
> Posicao pos[4] = { {2,3}, {0,2}, {1,2}, {3,3} };
> Posicao p = { 2,2 };
> vizinhos(p, pos, 4)
(int) 2 // correspondente a {2,3} e {1,2}
Resolução
#include <stdlib.h>
#define manDist(x1,y1,x2,y2) abs(x1 - x2) + abs(y1 - y2)
int vizinhos (Posicao p, Posicao pos[], int N) {
int i, ans = 0;
for(i = 0; i < N; i++)
if(manDist(pos[i].x, pos[i].y, p.x, p.y) == 1)
ans++;
return ans;
}