Ir para conteúdo
Fórum Script Brasil
  • 0

passar codigo de portugol para c


Gabriel Alves Toyo Pontes

Pergunta

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

Até agora não há respostas para essa pergunta

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...