Boa tarde pessoal, desenvolvi esse algoritmo para verificar se uma matriz é inca ou não, ou seja se partindo do extremo superior esquerdo e seguindo em espiral o número seguinte é o sucessor inteiro do número anterior, meu algoritmo está dando que a matriz é errada quando eu não começo com o primeiro termo da matriz [1,1] sendo 1, gostaria de pedir um minuto da atenção e experiência de todos vocês sou grato desde já.
algoritmo "Matriz Inca"
var
i,j,n,inicol,fimcol,inilin,fimlin,degrau:inteiro
matriz:vetor[1..20,1..20] de inteiro
eh_inca:logico
inicio
repita
escreva("Escolha a dimensão da Matriz:")
leia (n)
se((n < 1)ou(n > 20))então
escreval("A dimensão da matriz precisa estar entre 1 e 20")
fimse
ate ((n > 0 ) e (n < 21))
escreval("Matriz: ",n ," x ",n)
escreval("Digite os numeros da Matriz abaixo:")
para i de 1 ate n faca
para j de 1 ate n faca
escreval("Entre com o valor de matriz[",i,",",j,"]:")
leia (matriz[i,j])
fimpara
fimpara
para i de 1 ate n faca
escreval
para j de 1 ate n faca
escreva (matriz[i,j])
fimpara
escreval
fimpara
inicol <-1
fimcol <-n
inilin <-1
fimlin <-n
degrau <-0
eh_inca <- verdadeiro
enquanto ((eh_inca) e (inicol<fimcol) e (inilin<fimlin)) faca
para i de inicol ate fimcol faca
se (matriz[inilin,i] = degrau + 1) então
degrau <- degrau + 1
senao
eh_inca <- falso
fimse
fimpara
inilin <- inilin + 1
para i de inilin ate fimlin faca
se (matriz[i,fimcol] = degrau + 1) então
degrau <- degrau + 1
senao
eh_inca <- falso
fimse
fimpara
fimcol <- fimcol - 1
para i de fimcol ate inicol passo -1 faca
se (matriz[fimlin,i] = degrau + 1) então
degrau <- degrau + 1
senao
eh_inca <- falso
fimse
fimpara
fimlin <- fimlin - 1
para i de fimlin ate inilin passo -1 faca
se (matriz[i,inicol] = degrau + 1) então
degrau <- degrau + 1
senao
eh_inca<-falso
fimse
fimpara
inicol<-inicol + 1
fimenquanto
se (eh_inca) então
escreval ("Matriz é inca")
senao
escreval ("Matriz não é inca")
fimse
Pergunta
Lucas Bulhões
Boa tarde pessoal, desenvolvi esse algoritmo para verificar se uma matriz é inca ou não, ou seja se partindo do extremo superior esquerdo e seguindo em espiral o número seguinte é o sucessor inteiro do número anterior, meu algoritmo está dando que a matriz é errada quando eu não começo com o primeiro termo da matriz [1,1] sendo 1, gostaria de pedir um minuto da atenção e experiência de todos vocês sou grato desde já.
algoritmo "Matriz Inca"
var
i,j,n,inicol,fimcol,inilin,fimlin,degrau:inteiro
matriz:vetor[1..20,1..20] de inteiro
eh_inca:logico
inicio
repita
Editado por Lucas Bulhõesescreva("Escolha a dimensão da Matriz:")
leia (n)
se((n < 1)ou(n > 20))então
escreval("A dimensão da matriz precisa estar entre 1 e 20")
fimse
ate ((n > 0 ) e (n < 21))
escreval("Matriz: ",n ," x ",n)
escreval("Digite os numeros da Matriz abaixo:")
para i de 1 ate n faca
para j de 1 ate n faca
escreval("Entre com o valor de matriz[",i,",",j,"]:")
leia (matriz[i,j])
fimpara
fimpara
para i de 1 ate n faca
escreval
para j de 1 ate n faca
escreva (matriz[i,j])
fimpara
escreval
fimpara
inicol <-1
fimcol <-n
inilin <-1
fimlin <-n
degrau <-0
eh_inca <- verdadeiro
enquanto ((eh_inca) e (inicol<fimcol) e (inilin<fimlin)) faca
para i de inicol ate fimcol faca
se (matriz[inilin,i] = degrau + 1) então
degrau <- degrau + 1
senao
eh_inca <- falso
fimse
fimpara
inilin <- inilin + 1
para i de inilin ate fimlin faca
se (matriz[i,fimcol] = degrau + 1) então
degrau <- degrau + 1
senao
eh_inca <- falso
fimse
fimpara
fimcol <- fimcol - 1
para i de fimcol ate inicol passo -1 faca
se (matriz[fimlin,i] = degrau + 1) então
degrau <- degrau + 1
senao
eh_inca <- falso
fimse
fimpara
fimlin <- fimlin - 1
para i de fimlin ate inilin passo -1 faca
se (matriz[i,inicol] = degrau + 1) então
degrau <- degrau + 1
senao
eh_inca<-falso
fimse
fimpara
inicol<-inicol + 1
fimenquanto
se (eh_inca) então
escreval ("Matriz é inca")
senao
escreval ("Matriz não é inca")
fimse
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.