Buscar

Dado a posição de um cavalo num tabuleiro de xadrez, faça um algoritmo que mostre todas as movimentações possiveis para a posição dada.

Não estou conseguindo resolver, pois sempre que vou simular dá um erro diferente, alguém aqui tem uma idéia diferente?

💡 3 Respostas

User badge image

Daniel

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

0
Dislike0
User badge image

RD Resoluções

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

0
Dislike0
User badge image

Andre Smaira

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

0
Dislike0

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

✏️ Responder

SetasNegritoItálicoSublinhadoTachadoCitaçãoCódigoLista numeradaLista com marcadoresSubscritoSobrescritoDiminuir recuoAumentar recuoCor da fonteCor de fundoAlinhamentoLimparInserir linkImagemFórmula

Para escrever sua resposta aqui, entre ou crie uma conta.

User badge image

Outros materiais