Programação Imperativa

100 Questões Fichas Testes/Exames

Questão 50: vizinhos

Voltar

Considere 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;
}