prog
/*dimensões do bairro (Linhas, colunas)*/ #define LINHAS 5 #define COLUNAS 8
//definir constantes para as direções //norte #define N 'N' //sul #define S 'S' //Este #define E 'E' //Oeste #define O 'O'
//livre #define L '#'
//Halt (bloqueado) #define H 'H'
//definir os limites (onde deve ocorrer o ultimo passo na direção indicada) //limite Este #define LE (COLUNAS-1)
//limite Norte #define LN (0)
//limite Sul #define LS (LINHAS-1)
//limite Oeste #define LO (0)
#include
/* * Ler impedimentos do utilizador e guardar */ void lerImpedimentos( char bairroImp[][COLUNAS], int linhas);
/* * protótipos direção (movimentos) * */ void norte ( int local[ ] ); void sul( int local[ ] ); void este( int local[ ] ); void oeste( int local[ ] );
/* * decide para onde ir (N)orte ou (E)ste mediante impedimentos ou não * recebe a configuração do bairro, e o local atual, e para onde pretende ir * retorna H (halt) caso nenhum movimento pode ser usado */ char decideNE(char bairroImp[ ][ COLUNAS], const int local[ ], char vouPara);
/* * caminho a seguir, dando uma direção inicial * recebe a configuração do bairro, e o local atual, e para onde pretende ir * retorna numero de passos até o destino */ int caminho( char bairroImp[ ][ COLUNAS], int posicao[ ], const int posicaoFinal[], char rumoInicial);
//decide o melhor caminho a percorrer entre dois pontos de um bairro int main(int argc, char *argv[]){ int linha = 0; //linha atual usada na leitura dos impedimentos //1) configuração inicial de impedimentos char bairroImp[ LINHAS ][ COLUNAS ] = { //0 1 2 3 4 5 6 7 { L , L , L , L , L , E, L, L} , //0 { L , L , L , L , L , N, L, L} , //1 { N , L , L , L , L , E, L, L} , //2 { L , S , L , L , L , L, L, L} , //3 { L , N , L , L , E , L, L, L} //4 }; //2) posiçoes iniciais e finais com valores fixos (4,0) e (0,7) int posicao[2] = {4, 0}; int posicaoFinal[2] = {0, 7}; //3) rumo