Ir ao conteúdo
  • Cadastre-se

VisualG Erro sem explicação na declaração de registro


Posts recomendados

Eu estava fazendo fazendo um programa com procedimentos que nunca tinha feito antes, e me veio um problema logo de cara na hora que o Visualg lê a segunda linha do código.

Eu sempre declarei registros dessa forma e nunca deu errado, vocês conseguem identificar qual é o problema?

O resto do código tá coerente em relação aos procedimentos? Como deu esse problema, eu ainda não consegui testar os menus do programa usando esse tipo de comando.

 

Algoritmo "CadastroDeClienteeAutomovel"
Tipo
Processos = registro
     Codigo : inteiro
     Nome, Marca, Modelo, Cor, Ano, Placa, Chassi : caractere
fimregistro

Var
// Seção de Declarações das variáveis
Cadastro : Vetor [1..100] de Processos
i, n, o, p, q : inteiro

procedimento cadastro()
     inicio
     escreval ("Digite o número de clientes a serem cadastrados : ")
     leia (n)
     limpatela
     i := 1
     repita
        Cadastro[i].Codigo:= i + 1000
        escreval ("CADASTRO")
        escreval (" ")
        escreval ("Digite o nome do cliente : ")
        leia (Cadastro[i].Nome)
        escreval ("Digite a marca do veículo : ")
        leia (Cadastro[i].Marca)
        escreval ("Digite o modelo do veículo : ")
        leia (Cadastro[i].Modelo)
        escreval ("Digite a cor do veículo : ")
        leia (Cadastro[i].Cor)
        escreval ("Digite o ano do veículo : ")
        leia (Cadastro[i].Ano)
        escreval ("Digite o código da placa do veículo : ")
        leia (Cadastro[i].Placa)
        escreval ("Digite o código de chassi do veículo : ")
        leia (Cadastro[i].Chassi)
        i := i + 1
        limpatela
     ate i > n
     i := 1
     escreval ("Escolha uma opção:")
     escreval ("1- Acessar as informações de um cliente")
     escreval ("2- Fechar o programa")
     leia (q)
     limpatela
     se p = 2 então
     interrompa
     senao
     acesso
fimprocedimento

procedimento acesso()
     inicio
     escreval ("CLIENTES CADASTRADOS")
     escreval (" ")
     repita
     escreval ("Código : ", Cadastro[i].Codigo)
     escreval ("Nome do cliente: ", Cadastro[i].Nome)
     escreval (" ")
     i := i + 1
     ate i > n
     escreval ("Digite o código do cliente que você deseja acessar as informações")
     leia (p)
     limpatela
     escreval ("Código : ", Cadastro[p-1000].Codigo)
     escreval ("Nome do cliente: ", Cadastro[p-1000].Nome)
     escreval ("Veículo")
     escreval ("Marca : ", Cadastro[p-1000].Marca)
     escreval ("Modelo: ", Cadastro[p-1000].Modelo)
     escreval ("Cor : ", Cadastro[p-1000].Cor)
     escreval ("Ano : ", Cadastro[p-1000].Ano)
     escreval ("Placa : ", Cadastro[p-1000].Placa)
     escreval ("Chassi : ", Cadastro[p-1000].Chassi)
     escreval (" ")
     escreval ("Escolha uma opção:")
     escreval ("1- Cadastrar um cliente")
     escreval ("2- Fechar o programa")
     leia (q)
     limpatela
     se p = 2 então
     interrompa
     senao
     cadastro
fimprocedimento

Inicio
// Seção de Comandos, procedimento, funções, operadores, etc...
escreval ("MENU PRINCIPAL")
escreval (" ")
escreval ("1- Cadastrar cliente")
escreval ("2- Checar um cadastro já realizado")
escreval ("3- Fechar o programa")
fimprocedimento
leia (o)
limpatela
escolha o
caso 1
     cadastro
caso 2
     acesso
caso 3
     limpatela
     interrompa
outrocaso
         escreval ("Opção não válida!")
         interrompa
fimescolha
Fimalgoritmo

 

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

2 horas atrás, Simon Viegas disse:

Olá @LuisGCarv.

 

Lá na parte do programa principal tem um fimprocedimento "solto". Apaga esse linha.

Valeu pelo esclarecimento, @Simon Viegas . Esse problema foi resolvido, mas agora está dando uma falha na linha de declaração das variáveis e do escolha na parte principal :(

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

  • Membro VIP

Olá @LuisGCarv.

 

Que erro dá?

 

 

Então, aqui está dando erro ao tentar acessar o registro. Acho que está relacionado ao uso de procedimentos, ou seja, como se fosse um bug do Visualg. Testei aqui sem procedimentos e funcionou normalmente.

 

Resumindo: uma solução seria não utilizar procedimentos.

 

obs.: você não pode fazer um procedimento chamar um outro procedimento da forma que está fazendo. O mais correto seria fazer voltar para o menu principal. Mas de qualquer forma, se for seguir a sugestão acima, não precisará se preocupar com isso.

 

 

No aguardo.

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

Em 26/10/2017 às 09:41, Simon Viegas disse:

@LuisGCarv, por favor, poste seu código para analisarmos e/ou também poder servir de base para outros usuários.

 

 

No aguardo.

Eu estou tentando mandar o código, mas a opção para usar a tag de code só está me trazendo a de html. :mellow:

Eu só estou conseguindo postar códigos com tag personalizada quando inicio um tópico.

 

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

  • Membro VIP

Olá @LuisGCarv.

 

4 horas atrás, LuisGCarv disse:

Eu estou tentando mandar o código, mas a opção para usar a tag de code só está me trazendo a de html. :mellow:

A opção HTML é a padrão. Basta clicar e escolher "C Languagens".

 

4 horas atrás, LuisGCarv disse:

Eu só estou conseguindo postar códigos com tag personalizada quando inicio um tópico.

Estranho. Mas de qualquer sorte, pode posta como HTML mesmo... o que muda é só as cores. O importante é está na tag CODE. Mas não tem erro. Clica no botão <>, espera carregar, escolhe o tipo e cola. (ou cola e escolhe o tipo... tanto faz)

Se não conseguir nem com HTML, posta como citação ou sem tag alguma... o mais importa é o código...

 

A tag CODE é necessário para manter organizado, se estiver com algum problema, tente explicar melhor que verificamos com os administradores.

 

No aguardo.

 

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

 

9 horas atrás, Simon Viegas disse:

Olá @LuisGCarv.

 

A opção HTML é a padrão. Basta clicar e escolher "C Languagens".

 

Estranho. Mas de qualquer sorte, pode posta como HTML mesmo... o que muda é só as cores. O importante é está na tag CODE. Mas não tem erro. Clica no botão <>, espera carregar, escolhe o tipo e cola. (ou cola e escolhe o tipo... tanto faz)

Se não conseguir nem com HTML, posta como citação ou sem tag alguma... o mais importa é o código...

 

A tag CODE é necessário para manter organizado, se estiver com algum problema, tente explicar melhor que verificamos com os administradores.

 

No aguardo.

 

Eu consegui acessar as outras opções em outro tópico, nesse não está vindo, fica travado em html. :(

Mas se não tem problema postar assim, então aqui vai:

 

Algoritmo "CadastrarClienteeAutomovel"
Tipo
Processos = registro
     Codigo : inteiro
     Nome, Marca, Modelo, Cor, Ano, Placa, Chassi : caractere
fimregistro

Var
// Seção de Declarações das variáveis
Cadastro : Vetor [1..100] de Processos
i ,j, n, o, p, q : inteiro

Inicio
// Seção de Comandos, procedimento, funções, operadores, etc...
q := 1
enquanto q = 1 faca
escreval ("MENU PRINCIPAL")
escreval (" ")
escreval ("1- Cadastrar cliente")
escreval ("2- Checar um cadastro já realizado")
escreval ("3- Fechar o programa")
leia (o)
limpatela
escolha o
caso 1
     escreval ("Digite o número de clientes a serem cadastrados : ")
     leia (n)
     limpatela
     j := 1
     repita
         i := i + 1
        Cadastro[i].Codigo:= i + 1000
        escreval ("CADASTRO")
        escreval (" ")
        escreval ("Digite o nome do cliente : ")
        leia (Cadastro[i].Nome)
        escreval ("Digite a marca do veículo : ")
        leia (Cadastro[i].Marca)
        escreval ("Digite o modelo do veículo : ")
        leia (Cadastro[i].Modelo)
        escreval ("Digite a cor do veículo : ")
        leia (Cadastro[i].Cor)
        escreval ("Digite o ano do veículo : ")
        leia (Cadastro[i].Ano)
        escreval ("Digite o código da placa do veículo : ")
        leia (Cadastro[i].Placa)
        escreval ("Digite o código de chassi do veículo : ")
        leia (Cadastro[i].Chassi)
         j := j + 1
        limpatela
     ate j > n
     escreval ("Escolha uma opção:")
     escreval ("1- Voltar ao menu principal")
     escreval ("2- Fechar o programa")
     leia (q)
     limpatela
caso 2
     se (Cadastro[1].Codigo<1000) então
     escreval ("Sem clientes cadastrados!")
     escreval (" ")
     escreval ("Escolha uma opção:")
     escreval ("1- Voltar ao menu principal")
     escreval ("2- Fechar o programa")
     leia (q)
     limpatela
     senao
     escreval ("CLIENTES CADASTRADOS")
     escreval (" ")
     i := 1
     enquanto (Cadastro[i].Codigo>1000) faca
     escreval ("Código : ", Cadastro[i].Codigo)
     escreval ("Nome do cliente: ", Cadastro[i].Nome)
     escreval (" ")
     i := i + 1
     fimenquanto
     escreval ("Digite o código do cliente que você deseja acessar as informações")
     leia (p)
     limpatela
     escreval ("Código : ", Cadastro[p-1000].Codigo)
     escreval ("Nome do cliente: ", Cadastro[p-1000].Nome)
     escreval ("Veículo")
     escreval ("Marca : ", Cadastro[p-1000].Marca)
     escreval ("Modelo: ", Cadastro[p-1000].Modelo)
     escreval ("Cor : ", Cadastro[p-1000].Cor)
     escreval ("Ano : ", Cadastro[p-1000].Ano)
     escreval ("Placa : ", Cadastro[p-1000].Placa)
     escreval ("Chassi : ", Cadastro[p-1000].Chassi)
     escreval (" ")
     escreval ("Escolha uma opção:")
     escreval ("1- Voltar ao menu principal")
     escreval ("2- Fechar o programa")
     leia (q)
     limpatela
     fimse
caso 3
     limpatela
     interrompa
outrocaso
     repita
     escreval ("Opção inválida!")
     escreval (" ")
     escreval ("Escolha uma opção:")
     escreval ("1- Voltar ao menu principal")
     escreval ("2- Fechar o programa")
     leia (q)
     limpatela
     ate q < 3
fimescolha
fimenquanto
Fimalgoritmo

 

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

 

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

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!