Não estou conseguindo resolver, pois sempre que vou simular dá um erro diferente, alguém aqui tem uma idéia diferente?
Oi Wallace, mandem ai embaixo um algoritmo que fiz, eu testei aqui e deu certo (usei o visualg).
Espero ter ajudado
ESCREVAL("ENTRE COM A LINHA E A COLUNA, RESPECTIVAMENTE, DA POSICAO INICIAL DO CAVALO")
LEIA(L,C)
SE ((L<=8)E(C<=8))E((L>=1)E(C>=1))ENTAO
SE ((L+1<=8)E(C+2<=8))E((L+1>=1)E(C+2>=1)) ENTAO
ESCREVAL("O CAVALO PODE IR PARA A LINHA ",L+1," E COLUNA ",C+2)
FIMSE
SE ((L+2<=8)E(C+1<=8))E((L+2>=1)E(C+1>=1))ENTAO
ESCREVAL("O CAVALO PODE IR PARA A LINHA ",L+2," E COLUNA ",C+1)
FIMSE
SE ((L+2<=8)E(C-1<=8))E((L+2>=1)E(C-1>=1))ENTAO
ESCREVAL("O CAVALO PODE IR PARA A LINHA ",L+2," E COLUNA ",C-1)
FIMSE
SE ((L+1<=8)E(C-2<=8))E((L+1>=1)E(C-2>=1)) ENTAO
ESCREVAL("O CAVALO PODE IR PARA A LINHA ",L+1," E COLUNA ",C-2)
FIMSE
SE ((L-1<=8)E(C-2<=8))E((L-1>=1)E(C-2>=1)) ENTAO
ESCREVAL("O CAVALO PODE IR PARA A LINHA ",L-1," E COLUNA ",C-2)
FIMSE
SE ((L-2<=8)E(C+1<=8))E((L-2>=1)E(C+1>=1)) ENTAO
ESCREVAL("O CAVALO PODE IR PARA A LINHA ",L-2," E COLUNA ",C+1)
FIMSE
SE ((L-2<=8)E(C-1<=8))E((L-2>=1)E(C-1>=1)) ENTAO
ESCREVAL("O CAVALO PODE IR PARA A LINHA ",L-2," E COLUNA ",C-1)
FIMSE
SE ((L-1<=8)E(C+2<=8))E((L-1>=1)E(C+2>=1)) ENTAO
ESCREVAL("O CAVALO PODE IR PARA A LINHA ",L-1," E COLUNA ",C+2)
FIMSE
SENAO
ESCREVAL("ESSA POSICAO NAO EXISTE")
FIMSE
Inicialmente devemos criar as variáveis referentes a linhas e colunas atuais do cavalo e posteriormente recebe-las do usuário.
Var
C:inteiro
L:inteiro
inicio
ESCREVAL("Linha")
LEIA(L)
ESCREVAL(“Coluna:”)
LEIA(C)
Primeiramente devemos verificar se a posição realmente é viável, ou seja, C e L devem estar dentre 1 e 8.
SE((L<=8)E(C<=8))E((L>=1)E(C>=1))ENTAO
Agora verificaremos sempre se a proxima posição do cavalo sairia do tabuleiro ou não, assim devemos verificar para todas possibilidades, a primeira seria andar uma linha para cima e 2 colunas para o lado.
SE((L+1<=8)E(C+2<=8))E((L+1>=1)E(C+2>=1)) ENTAO
ESCREVAL(" PODE IR PARA A LINHA ",L+1," E COLUNA ",C+2)
FIMSE
A segunda seria um avanço de duas linhas para cima e uma coluna para direita. Com isso:
SE ((L+2<=8)E(C+1<=8))E((L+2>=1)E(C+1>=1))ENTAO
ESCREVAL(" PODE IR PARA A LINHA ",L+2," E COLUNA ",C+1)
FIMSE
Outra seria subir duas linhas e mover uma coluna para esquerda
SE ((L+2<=8)E(C-1<=8))E((L+2>=1)E(C-1>=1))ENTAO
ESCREVAL("PODE IR PARA A LINHA ",L+2," E COLUNA ",C-1)
FIMSE
Uma linha e para cima e duas colunas para esquerda.
SE ((L+1<=8)E(C-2<=8))E((L+1>=1)E(C-2>=1)) ENTAO
ESCREVAL("PODE IR PARA A LINHA ",L+1," E COLUNA ",C-2)
FIMSE
Uma linha para baixo e duas colunas para esquerda.
SE ((L-1<=8)E(C-2<=8))E((L-1>=1)E(C-2>=1)) ENTAO
ESCREVAL("PODE IR PARA A LINHA ",L-1," E COLUNA ",C-2)
FIMSE
Duas linhas para baixo e uma coluna para direita.
SE ((L-2<=8)E(C+1<=8))E((L-2>=1)E(C+1>=1)) ENTAO
ESCREVAL("PODE IR PARA A LINHA ",L-2," E COLUNA ",C+1)
FIMSE
Duas linhas para baixo e uma coluna para esquerda.
SE ((L-2<=8)E(C-1<=8))E((L-2>=1)E(C-1>=1)) ENTAO
ESCREVAL("PODE IR PARA A LINHA ",L-2," E COLUNA ",C-1)
FIMSE
E finalmente uma linha para baixo e duas colunas para direita, totalizando as 8 possibilidades.
SE ((L-1<=8)E(C+2<=8))E((L-1>=1)E(C+2>=1)) ENTAO
ESCREVAL("PODE IR PARA A LINHA ",L-1," E COLUNA ",C+2)
FIMSE
FIMSE
Inicialmente devemos criar as variáveis referentes a linhas e colunas atuais do cavalo e posteriormente recebe-las do usuário.
Var
C:inteiro
L:inteiro
inicio
ESCREVAL("Linha")
LEIA(L)
ESCREVAL(“Coluna:”)
LEIA(C)
Primeiramente devemos verificar se a posição realmente é viável, ou seja, C e L devem estar dentre 1 e 8.
SE((L<=8)E(C<=8))E((L>=1)E(C>=1))ENTAO
Agora verificaremos sempre se a proxima posição do cavalo sairia do tabuleiro ou não, assim devemos verificar para todas possibilidades, a primeira seria andar uma linha para cima e 2 colunas para o lado.
SE((L+1<=8)E(C+2<=8))E((L+1>=1)E(C+2>=1)) ENTAO
ESCREVAL(" PODE IR PARA A LINHA ",L+1," E COLUNA ",C+2)
FIMSE
A segunda seria um avanço de duas linhas para cima e uma coluna para direita. Com isso:
SE ((L+2<=8)E(C+1<=8))E((L+2>=1)E(C+1>=1))ENTAO
ESCREVAL(" PODE IR PARA A LINHA ",L+2," E COLUNA ",C+1)
FIMSE
Outra seria subir duas linhas e mover uma coluna para esquerda
SE ((L+2<=8)E(C-1<=8))E((L+2>=1)E(C-1>=1))ENTAO
ESCREVAL("PODE IR PARA A LINHA ",L+2," E COLUNA ",C-1)
FIMSE
Uma linha e para cima e duas colunas para esquerda.
SE ((L+1<=8)E(C-2<=8))E((L+1>=1)E(C-2>=1)) ENTAO
ESCREVAL("PODE IR PARA A LINHA ",L+1," E COLUNA ",C-2)
FIMSE
Uma linha para baixo e duas colunas para esquerda.
SE ((L-1<=8)E(C-2<=8))E((L-1>=1)E(C-2>=1)) ENTAO
ESCREVAL("PODE IR PARA A LINHA ",L-1," E COLUNA ",C-2)
FIMSE
Duas linhas para baixo e uma coluna para direita.
SE ((L-2<=8)E(C+1<=8))E((L-2>=1)E(C+1>=1)) ENTAO
ESCREVAL("PODE IR PARA A LINHA ",L-2," E COLUNA ",C+1)
FIMSE
Duas linhas para baixo e uma coluna para esquerda.
SE ((L-2<=8)E(C-1<=8))E((L-2>=1)E(C-1>=1)) ENTAO
ESCREVAL("PODE IR PARA A LINHA ",L-2," E COLUNA ",C-1)
FIMSE
E finalmente uma linha para baixo e duas colunas para direita, totalizando as 8 possibilidades.
SE ((L-1<=8)E(C+2<=8))E((L-1>=1)E(C+2>=1)) ENTAO
ESCREVAL("PODE IR PARA A LINHA ",L-1," E COLUNA ",C+2)
FIMSE
FIMSE
Para escrever sua resposta aqui, entre ou crie uma conta.
Compartilhar