Ir ao conteúdo
  • Cadastre-se

VisualG Problema com estrutura de repetição


Posts recomendados

 

Bom dia galerinha do bem!

 

Fiz um programinha com estruturas de repetição no VISUALG, rodando bacana mas quando fecha a estrutura de repetição dá o seguinte erro: "Fim Enquanto sem enquanto correspondente"

 

Alguém pode apontar um possível problema?  Programa roda legal até o término do segundo Enquanto, ele deveria voltar para o início do Enquanto mas ele dá a mensagem "FIM Enquanto sem Enquanto correspondente". Não descobri por que. Quem conseguir ver onde está o problema agradeço muito.

 

Obrigado galera!

--------------------------------------------------------------------------------------------------------------------------------------------
 

Algoritmo "vetor 30 ordem crescente"
Var
// Seção de Declarações das variáveis 
V: vetor[1..5] de Inteiro
Vazio: vetor[1..5] de Inteiro
h, i, j, k, m, n, p, aux, opcao, resta: Inteiro
partida, final: Inteiro
resp, tec: Caractere




Inicio    // P R O G R A M A   P R I N C I P A L
// Seção de Comandos, procedimento, funções, operadores, etc... 
   opcao <- 1
Enquanto (opcao <> 0) faca 
         Para n <- 1 ate 5 faca   // Inicialização de Vetores e contadores
              Vazio[n] <- 1
         FimPara
         resta <- 5
         Para p <- 1 ate 5 faca
              V[p] <- 0
         FimPara

         Enquanto (opcao <> 6) ou (opcao <> 0) faca
              LimpaTela
              EscrevaL("Você gostaria de inserir quantos números no vetor de 5 posições ?")
              EscrevaL("                       :'''''''''''''':                          ")
              EscrevaL("-----------------------:     MENU     :--------------------------")
              Escreval("                       :,,,,,,,,,,,,,,:                          ")
              EscrevaL("                                                                 ")
              Escreval("              Digite 1 - Para inserir 1 número                   ")
              Escreval("              Digite 2 - Para inserir 2 números                  ")
              EscrevaL("              Digite 3 - Para inserir 3 números                  ")
              Escreval("              Digite 4 - Para inserir 4 números                  ")
              Escreval("              Digite 5 - Para inserir 5 números                  ")
              Escreval("              Digite 0 - Para sair do programa                   ")
              Escreval("              Digite 6 - Para reinicializar os vetores           ")
              EscrevaL("-----------------------------------------------------------------")
              Leia(opcao)
             
               Se opcao = 1 entao   // 1º Se
                  Se resta <> 0 entao  // 2º Se
                     h <- 1
                     partida <- 0
                     Enquanto partida = 0 faca
                         Se (Vazio[h] = 1) entao  // 3º Se
                            partida <- h
                         FimSe                    // Fim 3º Se
                         h <- h + 1
                     FimEnquanto
                     final <- partida
                     Para i <- partida ate final faca
                          EscrevaL(i, "ª. posição: ")
                          Leia(V)
                          Vazio <- 0
                     FimPara
                     resta <- resta - opcao
                     EscrevaL("Você gostaria de ordenar de forma crescente ? [S/N]")
                     Leia(resp)
                     Se resp = "S" entao  // 4º Se
                        Para m <- 1 ate 4 faca
                             j <- 1
                             Enquanto j < 5 faca
                                   k <- j + 1
                                   Se (Vazio[j] = 0) e (Vazio[k] = 0) entao  // 5º Se
                                      Se V[j] > V[k] entao  // 6º Se
                                         aux <- V[j]
                                         V[j] <- V[k]
                                         V[k] <- aux
                                      FimSe                 //Fim do 6º Se
                                   FimSe                                    //Fim do 5º Se
                                   j <- j + 1
                             FimEnquanto
                        FimPara
                     FimSe                //Fim do 4º Se
                     Para i <- 1 ate 5 faca
                          EscrevaL(V)
                     FimPara
                     Escreval("Para voltar para o MENU dgite qualquer tecla seguida de ENTER")
                     Leia(tec)

                  Senao                 //Senao do 2º Se
                      Aviso()
                      Escreval("Para retornar ao MENU tecle qualquer tecla seguida de ENTER")
                      Leia(tec)

                  FimSe

 FimSe     // Fim 1º Se
         FimEnquanto

         Se (opcao = 6) entao    // 25º Se
            EscrevaL("Reinicializando programa ...Aguarde!")
            EscrevaL("")
            EscrevaL("")
            Escreval("Tecle qulaquer tecla seguida de ENTER para continuar")
            Leia(tec)
         FimSe
         FimSe                  // Fim 25º Se
   FimEnquanto
   Escreval("Obrigado por usar nosso programa!!! Volte sempre!")
   EscrevaL("-------------------------------------------------")
   EscrevaL("-------------       FIM       -------------------")
   EscrevaL("-------------------------------------------------")
Fimalgoritmo

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá! @MATEUS GOMES85, sem bem-vindo ao Fórum do Clube do Hardware.

 

6 horas atrás, MATEUS GOMES85 disse:

Fiz um programinha com estruturas de repetição no VISUALG, rodando bacana mas quando fecha a estrutura de repetição dá o seguinte erro: "Fim Enquanto sem enquanto correspondente"

 

Uma dica inicial é reindentar o código. Uma forma seria simplesmente pressionando CTRL+G.

 

Veja, apenas visualmente dá para ver que tem algo errado:

 

obs.: eu removi as linhas centrais para facilitar o print.

tela1.PNG

 

Esse último FimEnquanto deveria está na mesma direção do primeiro Enquato(). Eu suspeito que provavelmente você inseriu um FimSe a mais. Vou analisar com mais calma e já já eu posto o resultado.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Algoritmo "vetor 30 ordem crescente"
Var
   // Seção de Declarações das variáveis
   V: vetor[1..5] de Inteiro
   Vazio: vetor[1..5] de Inteiro
   h, i, j, k, m, n, p, aux, opcao, resta: Inteiro
   partida, final: Inteiro
   resp, tec: Caractere

Inicio
   // Seção de Comandos, procedimento, funções, operadores, etc...
   opcao <- 1
   Enquanto (opcao <> 0) faca
      Para n <- 1 ate 5 faca   // Inicialização de Vetores e contadores
         Vazio[n] <- 1
      FimPara
      resta <- 5
      Para p <- 1 ate 5 faca
         V[p] <- 0
      FimPara

      Enquanto (opcao <> 6) ou (opcao <> 0) faca
         LimpaTela
         EscrevaL("Você gostaria de inserir quantos números no vetor de 5 posições ?")
         EscrevaL("                       :'''''''''''''':                          ")
         EscrevaL("-----------------------:     MENU     :--------------------------")
         Escreval("                       :,,,,,,,,,,,,,,:                          ")
         EscrevaL("                                                                 ")
         Escreval("              Digite 1 - Para inserir 1 número                   ")
         Escreval("              Digite 2 - Para inserir 2 números                  ")
         EscrevaL("              Digite 3 - Para inserir 3 números                  ")
         Escreval("              Digite 4 - Para inserir 4 números                  ")
         Escreval("              Digite 5 - Para inserir 5 números                  ")
         Escreval("              Digite 0 - Para sair do programa                   ")
         Escreval("              Digite 6 - Para reinicializar os vetores           ")
         EscrevaL("-----------------------------------------------------------------")
         Leia(opcao)

         Se opcao = 1 entao   // 1º Se
            Se resta <> 0 entao  // 2º Se
               h <- 1
               partida <- 0
               Enquanto partida = 0 faca
                  Se (Vazio[h] = 1) entao  // 3º Se
                     partida <- h
                  FimSe                    // Fim 3º Se
                  h <- h + 1
               FimEnquanto
               final <- partida
               Para i <- partida ate final faca
                  EscrevaL(i, "ª. posição: ")
                  Leia(V[i])
                  Vazio[i] <- 0
               FimPara
               resta <- resta - opcao
               EscrevaL("Você gostaria de ordenar de forma crescente ? [S/N]")
               Leia(resp)
               Se resp = "S" entao  // 4º Se
                  Para m <- 1 ate 4 faca
                     j <- 1
                     Enquanto j < 5 faca
                        k <- j + 1
                        Se (Vazio[j] = 0) e (Vazio[k] = 0) entao  // 5º Se
                           Se V[j] > V[k] entao  // 6º Se
                              aux <- V[j]
                              V[j] <- V[k]
                              V[k] <- aux
                           FimSe                 //Fim do 6º Se
                        FimSe                                    //Fim do 5º Se
                        j <- j + 1
                     FimEnquanto
                  FimPara
               FimSe                //Fim do 4º Se
               Para i <- 1 ate 5 faca
                  EscrevaL(V[i])
               FimPara
               Escreval("Para voltar para o MENU dgite qualquer tecla seguida de ENTER")
               Leia(tec)

            Senao                 //Senao do 2º Se
               Aviso()
               Escreval("Para retornar ao MENU tecle qualquer tecla seguida de ENTER")
               Leia(tec)

            FimSe

         FimSe     // Fim 1º Se
         Se (opcao = 6) entao    // 25º Se
            EscrevaL("Reinicializando programa ...Aguarde!")
            EscrevaL("")
            EscrevaL("")
            Escreval("Tecle qulaquer tecla seguida de ENTER para continuar")
            Leia(tec)
         FimSe
         se (opcao=0) entao
            Escreval("Obrigado por usar nosso programa!!! Volte sempre!")
            EscrevaL("-------------------------------------------------")
            EscrevaL("-------------       FIM       -------------------")
            EscrevaL("-------------------------------------------------")
            leia(tec)
            interrompa
         fimse
      FimEnquanto
   FimEnquanto
Fimalgoritmo

desse jeito rodou direitinho, nao tive o erro q informa hora nenhuma na verdade, tive outros qnt ao preenchimento do vetor, usei o visualg 3.0.6.5

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

 

Um erro está aqui:

...
      Se (opcao = 6) entao    // 25º Se
         EscrevaL("Reinicializando programa ...Aguarde!")
         EscrevaL("")
         EscrevaL("")
         Escreval("Tecle qulaquer tecla seguida de ENTER para continuar")
         Leia(tec)
         {FimSe} //Esse fimSe não tem dono [Simon.Viegas]
      FimSe                  // Fim 25º Se
   FimEnquanto
...

 

Tem outro aqui:

      FimPara
      {Enquanto (opcao <> 6) ou (opcao <> 0) faca} //Está usando o operador lógico errado [Simon.Viegas]
      Enquanto (opcao <> 6) E (opcao <> 0) faca
         LimpaTela

 

Deixe para você efetuar os novos testes e efetuar os possíveis ajustes.

 

No aguardo.

adicionado 4 minutos depois

Terceiro erro:

         se (opcao=0) entao
            Escreval("Obrigado por usar nosso programa!!! Volte sempre!")
            EscrevaL("-------------------------------------------------")
            EscrevaL("-------------       FIM       -------------------")
            EscrevaL("-------------------------------------------------")
            leia(tec)
            {interrompa} //O programa NÃO deve ser interrompido. Tem que parar pela condição do laço [Simon.Viegas]
         fimse


É resolvido no segundo erro citado acima.

adicionado 14 minutos depois

PS: agora que eu vi que foi outro que respondeu, 😁.

Mas a dica é a mesma!

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Em 25/07/2019 às 19:25, nickosoft disse:

Algoritmo "vetor 30 ordem crescente"
Var
   // Seção de Declarações das variáveis
   V: vetor[1..5] de Inteiro
   Vazio: vetor[1..5] de Inteiro
   h, i, j, k, m, n, p, aux, opcao, resta: Inteiro
   partida, final: Inteiro
   resp, tec: Caractere

Inicio
   // Seção de Comandos, procedimento, funções, operadores, etc...
   opcao <- 1
   Enquanto (opcao <> 0) faca
      Para n <- 1 ate 5 faca   // Inicialização de Vetores e contadores
         Vazio[n] <- 1
      FimPara
      resta <- 5
      Para p <- 1 ate 5 faca
         V[p] <- 0
      FimPara

      Enquanto (opcao <> 6) ou (opcao <> 0) faca
         LimpaTela
         EscrevaL("Você gostaria de inserir quantos números no vetor de 5 posições ?")
         EscrevaL("                       :'''''''''''''':                          ")
         EscrevaL("-----------------------:     MENU     :--------------------------")
         Escreval("                       :,,,,,,,,,,,,,,:                          ")
         EscrevaL("                                                                 ")
         Escreval("              Digite 1 - Para inserir 1 número                   ")
         Escreval("              Digite 2 - Para inserir 2 números                  ")
         EscrevaL("              Digite 3 - Para inserir 3 números                  ")
         Escreval("              Digite 4 - Para inserir 4 números                  ")
         Escreval("              Digite 5 - Para inserir 5 números                  ")
         Escreval("              Digite 0 - Para sair do programa                   ")
         Escreval("              Digite 6 - Para reinicializar os vetores           ")
         EscrevaL("-----------------------------------------------------------------")
         Leia(opcao)

         Se opcao = 1 entao   // 1º Se
            Se resta <> 0 entao  // 2º Se
               h <- 1
               partida <- 0
               Enquanto partida = 0 faca
                  Se (Vazio[h] = 1) entao  // 3º Se
                     partida <- h
                  FimSe                    // Fim 3º Se
                  h <- h + 1
               FimEnquanto
               final <- partida
               Para i <- partida ate final faca
                  EscrevaL(i, "ª. posição: ")
                  Leia(V[i])
                  Vazio[i] <- 0
               FimPara
               resta <- resta - opcao
               EscrevaL("Você gostaria de ordenar de forma crescente ? [S/N]")
               Leia(resp)
               Se resp = "S" entao  // 4º Se
                  Para m <- 1 ate 4 faca
                     j <- 1
                     Enquanto j < 5 faca
                        k <- j + 1
                        Se (Vazio[j] = 0) e (Vazio[k] = 0) entao  // 5º Se
                           Se V[j] > V[k] entao  // 6º Se
                              aux <- V[j]
                              V[j] <- V[k]
                              V[k] <- aux
                           FimSe                 //Fim do 6º Se
                        FimSe                                    //Fim do 5º Se
                        j <- j + 1
                     FimEnquanto
                  FimPara
               FimSe                //Fim do 4º Se
               Para i <- 1 ate 5 faca
                  EscrevaL(V[i])
               FimPara
               Escreval("Para voltar para o MENU dgite qualquer tecla seguida de ENTER")
               Leia(tec)

            Senao                 //Senao do 2º Se
               Aviso()
               Escreval("Para retornar ao MENU tecle qualquer tecla seguida de ENTER")
               Leia(tec)

            FimSe

         FimSe     // Fim 1º Se
         Se (opcao = 6) entao    // 25º Se
            EscrevaL("Reinicializando programa ...Aguarde!")
            EscrevaL("")
            EscrevaL("")
            Escreval("Tecle qulaquer tecla seguida de ENTER para continuar")
            Leia(tec)
         FimSe
         se (opcao=0) entao
            Escreval("Obrigado por usar nosso programa!!! Volte sempre!")
            EscrevaL("-------------------------------------------------")
            EscrevaL("-------------       FIM       -------------------")
            EscrevaL("-------------------------------------------------")
            leia(tec)
            interrompa
         fimse
      FimEnquanto
   FimEnquanto
Fimalgoritmo

desse jeito rodou direitinho, nao tive o erro q informa hora nenhuma na verdade, tive outros qnt ao preenchimento do vetor, usei o visualg 3.0.6.5

Muito bom amigo!! Acabei de rodar aqui e deu certo também! Eu tava colocando um Se Entao a mais.

 

Muito obrigado! Me abriu a mente! valeu

adicionado 1 minuto depois
agora, MATEUS GOMES85 disse:

Muito bom amigo!! Acabei de rodar aqui e deu certo também! Eu tava colocando um Se Entao a mais.

 

Muito obrigado! Me abriu a mente! valeu

 

Em 25/07/2019 às 19:26, Simon Viegas disse:

 

Um erro está aqui:


...
      Se (opcao = 6) entao    // 25º Se
         EscrevaL("Reinicializando programa ...Aguarde!")
         EscrevaL("")
         EscrevaL("")
         Escreval("Tecle qulaquer tecla seguida de ENTER para continuar")
         Leia(tec)
         {FimSe} //Esse fimSe não tem dono [Simon.Viegas]
      FimSe                  // Fim 25º Se
   FimEnquanto
...

 

Tem outro aqui:


      FimPara
      {Enquanto (opcao <> 6) ou (opcao <> 0) faca} //Está usando o operador lógico errado [Simon.Viegas]
      Enquanto (opcao <> 6) E (opcao <> 0) faca
         LimpaTela

 

Deixe para você efetuar os novos testes e efetuar os possíveis ajustes.

 

No aguardo.

adicionado 4 minutos depois

Terceiro erro:


         se (opcao=0) entao
            Escreval("Obrigado por usar nosso programa!!! Volte sempre!")
            EscrevaL("-------------------------------------------------")
            EscrevaL("-------------       FIM       -------------------")
            EscrevaL("-------------------------------------------------")
            leia(tec)
            {interrompa} //O programa NÃO deve ser interrompido. Tem que parar pela condição do laço [Simon.Viegas]
         fimse

Valeu Simon! Essa condição do Enquanto realmente estava furada.. rsrs

 

Muito obrigado pelo toque... acho que a gora vai. 

 

É resolvido no segundo erro citado acima.

adicionado 14 minutos depois

PS: agora que eu vi que foi outro que respondeu, 😁.

Mas a dica é a mesma!

 

Link para o comentário
Compartilhar em outros sites

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...