Questão 47: posFinal
VoltarConsidere as seguintes definições para representar as posições e movimentos de um robot.
typedef enum movimento {Norte, Oeste, Sul, Este} Movimento;
typedef struct posicao {
int x, y;
} Posicao;
Defina a função Posicao posFinal (Posicao inicial, Movimento mov[], int N)
que, dada uma posição inicial e um array com N
movimentos, calcula a posição final do robot depois de efectuar essa sequência de movimentos.
Exemplo
> Movimento mov[5] = { Norte, Norte, Oeste, Sul, Oeste };
> Posicao inicial = { 0, 0 };
> Posicao final = posFinal(inicial, mov, 5);
> printf("(%d, %d)\n", final.x, final.y);
(-2, 1)
Resolução
Posicao posFinal (Posicao inicial, Movimento mov[], int N) {
int i;
for(i = 0; i < N; i++) {
switch (mov[i]) {
case Norte:
inicial.y++;
break;
case Este:
inicial.x++;
break;
case Sul:
inicial.y--;
break;
case Oeste:
inicial.x--;
break;
default:
break;
}
}
return inicial;
}