Não estou conseguindo traduzir esse codigo de portugol para c...
Algoritmo "puzzle"
const
LIM5 = 5
LIM_MAX = 25
Var
cont,i,j,k,l,n:inteiro
mat_main,mat_result:vetor[1..LIM5,1..LIM5] de inteiro
vet:vetor[1..LIM_MAX] de inteiro
concluido:logico
//Procedimento de teste, utilizado para verificar o que acontece quando conclui-se o jogo.
//Observação : para a utilização deste procedimento, remova o comentário da linha 282 e adicione outro, à linha 281.
procedimento set_matriz_pronta
var
g:inteiro
inicio
para i de 1 ate n faca
para j de 1 ate n faca
g <- g + 1
se((i = n) e (j = n))então
senao
mat_main[i,j] <- g
mat_result[i,j] <- g
fimse
fimpara
fimpara
fimprocedimento
//Procedimento que compara os valores das matrizes, verificando se estão iguais.
procedimento ver_result
inicio
concluido <- verdadeiro
para i de 1 ate n faca
para j de 1 ate n faca
se(mat_main[i,j] = mat_result[i,j])então
senao
concluido <- falso
interrompa
fimse
fimpara
fimpara
fimprocedimento
//Procedimento que conta quantos movimentos foram usados duranteo jogo.
//Procedimento responsável por mover a área vazia.
procedimento mover_quadrado
var
can:logico
op:caractere
troca:inteiro
inicio
escreval("Aperte a tecla correspondente à operação que deseja executar:")
repita
leia(op)
can <- falso
escolha(op)
caso "w", "8"
se((k-1) > 0)então
troca <- mat_main[k,l]
mat_main[k,l] <- mat_main[k - 1,l]
mat_main[k - 1,l] <- troca
can <- verdadeiro
fimse
caso "s", "2"
se((k+1) <= n)então
troca <- mat_main[k,l]
mat_main[k,l] <- mat_main[k + 1,l]
mat_main[k + 1,l] <- troca
can <- verdadeiro
fimse
caso "a", "4"
se((l-1) > 0)então
troca <- mat_main[k,l]
mat_main[k,l] <- mat_main[k,l-1]
mat_main[k,l - 1] <- troca
can <- verdadeiro
fimse
caso "d", "6"
se((l+1) <= n)então
troca <- mat_main[k,l]
mat_main[k,l] <- mat_main[k,l+1]
mat_main[k,l + 1] <- troca
can <- verdadeiro
fimse
fimescolha
se(can = falso)então
escreval("Digite somente operações validas :")
fimse
ate(can = verdadeiro)
fimprocedimento
//Procedimento que apresenta o Tutorial do jogo
procedimento instrucao
var
i:inteiro
inicio
escreval("Instruções")
escreval("|---------------------------------------|")
escreval("Utilize letras maiúsculas.")
escreval("|---------------------------------------|")
para i de 1 ate 4 faca
escolha(i)
caso 1
escreval("Utilize as teclas 'W' para mover para CIMA.")
caso 2
escreval("Utilize as teclas 'S' para mover para BAIXO.")
caso 3
escreval("Utilize as teclas 'A' para mover para ESQUERDA.")
caso 4
escreval("Utilize as teclas 'D' para mover para DIREITA.")
fimescolha
fimpara
escreval("|---------------------------------------|")
fimprocedimento
//Procedimento que desordena os valores e verifica se há repetidos
procedimento rand_vetor
var
b,num,m, i, j, k : inteiro
inicio
num <- ((n*n)-1)
para i de 1 ate (n*n) faca
repita
m <- randi(num)
b <- m + 1
para j de 1 ate i faca
se (vet[j] = b ) então
k <- k + 1
fimse
fimpara
se (k = 0) então
vet[j] <- b
interrompa
senao
k <- 0
fimse
ate(i = num)
k <- 0
fimpara
fimprocedimento
//Insere os valores nas matrizes,uma contendo o resultado e a outra não.
procedimento set_matriz
var
g:inteiro
inicio
para i de 1 ate n faca
para j de 1 ate n faca
g <- g + 1
se((i = n) e (j = n))então
mat_main[i,j] <- vet[g]
procedimento print_matriz3
inicio
escreval("/-------------\")
para i de 1 ate n faca
escreva("")
para j de 1 ate n faca
se(mat_main[i,j] = 0)então
escreva("| |")
k <- i
l <- j
senao
escreva("|",mat_main[i,j]:2," |")
fimse
fimpara
escreval("")
fimpara
escreval("\-------------/")
fimprocedimento
procedimento print_matriz4
inicio
escreval("/------------------\")
para i de 1 ate n faca
escreva("")
para j de 1 ate n faca
se(mat_main[i,j] = 0)então
escreva("| |")
k <- i
l <- j
senao
escreva("|",mat_main[i,j]:2," |")
fimse
fimpara
escreval("")
fimpara
escreval("\------------------/")
fimprocedimento
procedimento print_matriz5
inicio
escreval("/-----------------------\")
para i de 1 ate n faca
escreva("")
para j de 1 ate n faca
se(mat_main[i,j] = 0)então
escreva("| |")
k <- i
l <- j
senao
escreva("|",mat_main[i,j]:2," |")
fimse
fimpara
escreval("")
fimpara
escreval("\-----------------------/")
fimprocedimento
//Procedimento Principal
procedimento link_start
inicio
repita
limpatela
escolha (n)
caso 3
print_matriz3
caso 4
print_matriz4
caso 5
print_matriz5
fimescolha
contador
instrucao
mover_quadrado
ver_result
ate(concluido = verdadeiro)
limpatela
escreval("Sucesso!!!")
contador
fimprocedimento
procedimento main_menu
var
start:logico
inicio
escreval(" xxxxxxx xxxxxxx xx xx xxxxxxxxx xxxxxxxxx xx xxxxxxx")
escreval(" xx xx xx xx xx xx xxx xxx xx xx ")
escreval(" xxxxxxx xxxxxxx xx xx xxx xxx xx xxxxx ")
escreval(" xx xx xx xx xx xxx xxx xx xx ")
escreval(" xxxxxxx xx xxxxxxxx xxxxxxxxx xxxxxxxxx xxxxxxx xxxxxxx")
escreval()
escreval("Aperte Enter para jogar")
leia(start)
fimprocedimento
Inicio
concluido <- falso
cont <- -1
main_menu
repita
escreval("Digite um número de 3 a 5")
leia(n)
ate((n>=3) e (n<=5))
Pergunta
Gabriel Alves Toyo Pontes
Não estou conseguindo traduzir esse codigo de portugol para c...
Algoritmo "puzzle"
const
LIM5 = 5
LIM_MAX = 25
Var
cont,i,j,k,l,n:inteiro
mat_main,mat_result:vetor[1..LIM5,1..LIM5] de inteiro
vet:vetor[1..LIM_MAX] de inteiro
concluido:logico
//Procedimento de teste, utilizado para verificar o que acontece quando conclui-se o jogo.
//Observação : para a utilização deste procedimento, remova o comentário da linha 282 e adicione outro, à linha 281.
procedimento set_matriz_pronta
var
g:inteiro
inicio
para i de 1 ate n faca
para j de 1 ate n faca
g <- g + 1
se((i = n) e (j = n))então
senao
mat_main[i,j] <- g
mat_result[i,j] <- g
fimse
fimpara
fimpara
fimprocedimento
//Procedimento que compara os valores das matrizes, verificando se estão iguais.
procedimento ver_result
inicio
concluido <- verdadeiro
para i de 1 ate n faca
para j de 1 ate n faca
se(mat_main[i,j] = mat_result[i,j])então
senao
concluido <- falso
interrompa
fimse
fimpara
fimpara
fimprocedimento
//Procedimento que conta quantos movimentos foram usados duranteo jogo.
procedimento contador
inicio
escreval("")
cont <- cont + 1
escreval("Movimentos :",cont)
escreval("")
fimprocedimento
//Procedimento responsável por mover a área vazia.
procedimento mover_quadrado
var
can:logico
op:caractere
troca:inteiro
inicio
escreval("Aperte a tecla correspondente à operação que deseja executar:")
repita
leia(op)
can <- falso
escolha(op)
caso "w", "8"
se((k-1) > 0)então
troca <- mat_main[k,l]
mat_main[k,l] <- mat_main[k - 1,l]
mat_main[k - 1,l] <- troca
can <- verdadeiro
fimse
caso "s", "2"
se((k+1) <= n)então
troca <- mat_main[k,l]
mat_main[k,l] <- mat_main[k + 1,l]
mat_main[k + 1,l] <- troca
can <- verdadeiro
fimse
caso "a", "4"
se((l-1) > 0)então
troca <- mat_main[k,l]
mat_main[k,l] <- mat_main[k,l-1]
mat_main[k,l - 1] <- troca
can <- verdadeiro
fimse
caso "d", "6"
se((l+1) <= n)então
troca <- mat_main[k,l]
mat_main[k,l] <- mat_main[k,l+1]
mat_main[k,l + 1] <- troca
can <- verdadeiro
fimse
fimescolha
se(can = falso)então
escreval("Digite somente operações validas :")
fimse
ate(can = verdadeiro)
fimprocedimento
//Procedimento que apresenta o Tutorial do jogo
procedimento instrucao
var
i:inteiro
inicio
escreval("Instruções")
escreval("|---------------------------------------|")
escreval("Utilize letras maiúsculas.")
escreval("|---------------------------------------|")
para i de 1 ate 4 faca
escolha(i)
caso 1
escreval("Utilize as teclas 'W' para mover para CIMA.")
caso 2
escreval("Utilize as teclas 'S' para mover para BAIXO.")
caso 3
escreval("Utilize as teclas 'A' para mover para ESQUERDA.")
caso 4
escreval("Utilize as teclas 'D' para mover para DIREITA.")
fimescolha
fimpara
escreval("|---------------------------------------|")
fimprocedimento
//Procedimento que desordena os valores e verifica se há repetidos
procedimento rand_vetor
var
b,num,m, i, j, k : inteiro
inicio
num <- ((n*n)-1)
para i de 1 ate (n*n) faca
repita
m <- randi(num)
b <- m + 1
para j de 1 ate i faca
se (vet[j] = b ) então
k <- k + 1
fimse
fimpara
se (k = 0) então
vet[j] <- b
interrompa
senao
k <- 0
fimse
ate(i = num)
k <- 0
fimpara
fimprocedimento
//Insere os valores nas matrizes,uma contendo o resultado e a outra não.
procedimento set_matriz
var
g:inteiro
inicio
para i de 1 ate n faca
para j de 1 ate n faca
g <- g + 1
se((i = n) e (j = n))então
mat_main[i,j] <- vet[g]
senao
mat_main[i,j] <- vet[g]
mat_result[i,j] <- g
fimse
fimpara
fimpara
fimprocedimento
procedimento print_matriz3
inicio
escreval("/-------------\")
para i de 1 ate n faca
escreva("")
para j de 1 ate n faca
se(mat_main[i,j] = 0)então
escreva("| |")
k <- i
l <- j
senao
escreva("|",mat_main[i,j]:2," |")
fimse
fimpara
escreval("")
fimpara
escreval("\-------------/")
fimprocedimento
procedimento print_matriz4
inicio
escreval("/------------------\")
para i de 1 ate n faca
escreva("")
para j de 1 ate n faca
se(mat_main[i,j] = 0)então
escreva("| |")
k <- i
l <- j
senao
escreva("|",mat_main[i,j]:2," |")
fimse
fimpara
escreval("")
fimpara
escreval("\------------------/")
fimprocedimento
procedimento print_matriz5
inicio
escreval("/-----------------------\")
para i de 1 ate n faca
escreva("")
para j de 1 ate n faca
se(mat_main[i,j] = 0)então
escreva("| |")
k <- i
l <- j
senao
escreva("|",mat_main[i,j]:2," |")
fimse
fimpara
escreval("")
fimpara
escreval("\-----------------------/")
fimprocedimento
//Procedimento Principal
procedimento link_start
inicio
repita
limpatela
escolha (n)
caso 3
print_matriz3
caso 4
print_matriz4
caso 5
print_matriz5
fimescolha
contador
instrucao
mover_quadrado
ver_result
ate(concluido = verdadeiro)
limpatela
escreval("Sucesso!!!")
contador
fimprocedimento
procedimento main_menu
var
start:logico
inicio
escreval(" xxxxxxx xxxxxxx xx xx xxxxxxxxx xxxxxxxxx xx xxxxxxx")
escreval(" xx xx xx xx xx xx xxx xxx xx xx ")
escreval(" xxxxxxx xxxxxxx xx xx xxx xxx xx xxxxx ")
escreval(" xx xx xx xx xx xxx xxx xx xx ")
escreval(" xxxxxxx xx xxxxxxxx xxxxxxxxx xxxxxxxxx xxxxxxx xxxxxxx")
escreval()
escreval("Aperte Enter para jogar")
leia(start)
fimprocedimento
Inicio
concluido <- falso
cont <- -1
main_menu
repita
escreval("Digite um número de 3 a 5")
leia(n)
ate((n>=3) e (n<=5))
rand_vetor
set_matriz
// set_matriz_pronta(n)
link_start
Fimalgoritmo
Link para o comentário
Compartilhar em outros sites
0 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.