Ir ao conteúdo

Portugol VisualG, "até sem repita"


Ir à solução Resolvido por YasminBueno,

Posts recomendados

Postado

O meu código está dando erro, dizendo: "ate sem repita" na penúltima linha do código, mas o repita está lá, queria saber o porque de estar dando esse erro 

algoritmo "JogoDaVelha"

var
v:vetor[1..3, 1..3]de caractere
s: caractere
c,i,cont,p:inteiro
r:logico

procedimento velha()
inicio
para c de 1 ate 3 faca
   escreval("----------")
   para i de 1 ate 3 faca
      escreva("|",v[c,i]:2)
   fimpara
   escreval("|")
fimpara
escreval("----------")
fimprocedimento

funcao jogar(sim:caractere; posi:inteiro): logico
var
m:logico
inicio
m <- falso
para c de 1 ate 3 faca
   para i de 1 ate 3 faca
      se (v[c,i] = NumpCarac(posi)) entao
         V[c,i] <- sim
         m <- verdadeiro
      fimse
   fimpara
fimpara
retorne m
fimfuncao

procedimento mudarJogador()
inicio
se(s="O")entao
   s <- "X"
senao
   s <- "O"
   fimprocedimento

   Funcao final(): Logico
   Var
   terminou: Logico
   ocorr: Inteiro
   inicio
   terminou <- falso
   // Jogos em linha
   Para L <- 1 ate 3 faca
      Se (v[L,1] = v[L,2]) e (v[L,2] = v[L,3]) entao
         terminou <- verdadeiro
      FimSe
   FimPara
   // Jogos em coluna
   Para C <- 1 ate 3 faca
      Se (v[1,C] = v[2,C]) e (v[2,C] = v[3,C]) entao
         terminou <- verdadeiro
      FimSe
   FimPara
   // Jogos em diagonal
   Se (v[1,1] = v[2,2]) e (v[2,2] = v[3,3]) entao
      terminou <- verdadeiro
   FimSe
   Se (v[1,3] = v[2,2]) e (v[2,2] = v[3,1]) entao
      terminou <- verdadeiro
   FimSe

   // Jogos em VELHA
   ocorr <- 0
   Para L <- 1 ate 3 faca
      Para C <- 1 ate 3 faca
         Se (v[L,C] <> "X") e (v[L,C] <> "O") entao
            ocorr <- ocorr + 1
         FimSe
      FimPara
   FimPara
   Se (ocorr = 0) entao
      terminou <- verdadeiro
   FimSe

   // Retorna se o jogo acabou ou não
   Retorne terminou
   FimFuncao

   inicio
   cont <- 1
   s <- "X"
   para c de 1 ate 3 faca
      para i de 1 ate 3 faca
         v[c,i] <- NumpCarac(cont)
         cont <- cont+1
      fimpara
   fimpara
   velha()
   repita
      repita
         escreva("Posição da jogada: ")
         leia(p)
         r <- jogar(s,p)
         se(r=falso)entao
            escreva("JOGADA INVALIDA!!")
         fimse
       ate(r=verdadeiro)
      mudarJogador()
      limpatela
      velha()
    ate(final() = verdadeiro)
   escreva("JOGO FINALIZADO!!!")
fimalgoritmo

 

  • Curtir 1
  • Solução
Postado
algoritmo "JogoDaVelha"

var
v:vetor[1..3, 1..3]de caractere
s: caractere
c,i,cont,p,l:inteiro
r:logico

procedimento velha()
inicio
para c de 1 ate 3 faca
   escreval("----------")
   para i de 1 ate 3 faca
      escreva("|",v[c,i]:2)
   fimpara
   escreval("|")
fimpara
escreval("----------")
fimprocedimento

funcao jogar(sim:caractere; posi:inteiro): logico
var
m:logico
inicio
m <- falso
para c de 1 ate 3 faca
   para i de 1 ate 3 faca
      se (v[c,i] = NumpCarac(posi)) entao
         V[c,i] <- sim
         m <- verdadeiro
      fimse
   fimpara
fimpara
retorne m
fimfuncao

procedimento mudarJogador()
inicio
se(s="O")entao
   s <- "X"
senao
   s <- "O"
fimse
   fimprocedimento

   Funcao final(): Logico
   Var
   terminou: Logico
   ocorr: Inteiro
   inicio
   terminou <- falso
   // Jogos em linha
   Para L <- 1 ate 3 faca
      Se (v[L,1] = v[L,2]) e (v[L,2] = v[L,3]) entao
         terminou <- verdadeiro
      FimSe
   FimPara
   // Jogos em coluna
   Para C <- 1 ate 3 faca
      Se (v[1,C] = v[2,C]) e (v[2,C] = v[3,C]) entao
         terminou <- verdadeiro
      FimSe
   FimPara
   // Jogos em diagonal
   Se (v[1,1] = v[2,2]) e (v[2,2] = v[3,3]) entao
      terminou <- verdadeiro
   FimSe
   Se (v[1,3] = v[2,2]) e (v[2,2] = v[3,1]) entao
      terminou <- verdadeiro
   FimSe

   // Jogos em VELHA
   ocorr <- 0
   Para L <- 1 ate 3 faca
      Para C <- 1 ate 3 faca
         Se (v[L,C] <> "X") e (v[L,C] <> "O") entao
            ocorr <- ocorr + 1
         FimSe
      FimPara
   FimPara
   Se (ocorr = 0) entao
      terminou <- verdadeiro
   FimSe

   // Retorna se o jogo acabou ou não
   Retorne terminou
   FimFuncao

   inicio
   cont <- 1
   s <- "X"
   para c de 1 ate 3 faca
      para i de 1 ate 3 faca
         v[c,i] <- NumpCarac(cont)
         cont <- cont+1
      fimpara
   fimpara
   velha()
   repita
      repita
         escreva("Posição da jogada: ")
         leia(p)
         r <- jogar(s,p)
         se(r=falso)entao
            escreva("JOGADA INVALIDA!!")
         fimse
       ate(r=verdadeiro)
      mudarJogador()
      limpatela
      velha()
    ate(final() = verdadeiro)
   escreva("JOGO FINALIZADO!!!")
fimalgoritmo

Consegui achar o erro, tinha me esquecido de declarar a variável L  e de um fimse no procedimento mudarJogador

  • Obrigado 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!