Ir ao conteúdo
  • Cadastre-se
Irwing Seiji Ato

VisualG Erro no enquanto sendo que tem o faca

Posts recomendados

O código está completo mas está dando erro dizendo que não encontrou o enquanto correspondente do fimenquanto e as outras opções depois que executa diz que não encontra o fimalgoritmo sendo que está ai o que pode ser o erro?

Segue o código abaixo

Algoritmo "semnome"
// Disciplina   : [Linguagem e Lógica de Programação]
// Professor   : Antonio Carlos Nicolodi
// Descrição   : Aqui você descreve o que o programa faz! (função)
// Autor(a)    : Nome do(a) aluno(a)
// Data atual  : 13/06/2019
Var
   // Seção de Declarações das variáveis
   opcao: inteiro
   altura, total: real
   sexo: caractere
   id,cont,tp: inteiro
   num:vetor [1..3] de real
   matris1,matris2, matris3, matris4:vetor[1..4,1..6] de real
   i,j:inteiro
   a, b, c, delta, x1, x2: real


Inicio
   // Seção de Comandos, procedimento, funções, operadores, etc...
   opcao<- 1
funcao calcula_delta(): real
var
   delta : real
inicio
   delta := b*b - 4*a*c
   retorne delta
fimfuncao
enquanto (opcao <> 0) faca
   escreval("Escolha a opção desejada")
   escreval("1 - Condição (SE, SENAO)")
   escreval("2 - Repetição (Para OU Enquanto)")
   escreval("3 - Vetor")
   escreval("4 - Matriz")
   escreval("5 - Sub-rotina")
   escreval("0 - Sair")
   leia(opcao)
   escolha opcao
   caso 0
      escreval("Obrigado e tenho um bom dia")
      interrompa
   caso 1
      escreval("Digite sua altura:")
      leia(altura)
      escreval("Digite aqui se você é homem ou mulher sem abreviação e tudo minúsculo:")
      leia(sexo)
      se(sexo="homem")entao
         escreval("Sexo Masculino, Altura:",altura)
         total<-(72.7*altura)-58
         escreval("Seu peso ideal é:",total)
      senao
         se(sexo="mulher") entao
            escreval("Sexo Feminino, Altura:",altura)
            total<-(62.1*altura)-44.7
            escreval ("Seu peso ideal é:",total)
         fimse
      fimse
      escreval("Neste algoritmo foi feito o cálculo do peso ideal caso fosse homem")
      escreval("é feita uma conta caso seja mulher irá fazer outra conta com outros valores")
   caso 2
      cont<-1
      enquanto (cont<=10) faca
         escreval("Digite a idade da ",cont, " pessoa: ")
         leia(id)
         se(id>=18) entao
            tp<-tp+1
         fimse
         cont<-cont+1
      fimenquanto
      escreval("O total de pessoas com idade maior ou igual a 18 são:", tp)
      escreval("Aqui foi contada quantas pessoas tinham idade superior ou igual a 18")
      escreval("utilizando um enquanto e somando a cada pessoa adicionado até o contador ser igual a 10")
   caso 3
      para cont de 1 ate 3 faca
         escreval("Digite um número")
         leia(num[cont])
         se(num[cont]<0) entao
            num[cont]<- 0
         fimse
      fimpara
      para cont de 1 ate 3 faca
         escreval("O número",num[cont])
      fimpara
      escreval("Aqui foi feito um um algoritmo que armazena em um vetor e caso o número seja menor negativo")
      escreval("ele é substituído pelo 0")
   caso 4
      para i de 1 ate 4 faca
         para j de 1 ate 6 faca
            escreval("Matriz 1: [",i,"]","[",j,"]")
            leia(matris1[i,j])
         fimpara
      fimpara
      para i de 1 ate 4 faca
         para j de 1 ate 6 faca
            escreval("Matriz 2: [",i,"]","[",j,"]")
            leia(matris2[i,j])
         fimpara
      fimpara
      para i de 1 ate 4 faca
         para j de 1 ate 6 faca
            matris3[i,j] <- matris1[i,j] + matris2[i,j]
         fimpara
      fimpara
      para i de 1 ate 4 faca
         para j de 1 ate 6 faca
            matris4[i,j] <- matris1[i,j] - matris2[i,j]
         fimpara
      fimpara
      escreval("Matriz 1: ")
      para i de 1 ate 4 faca
         para j de 1 ate 6 faca
            escreva(" [",i,"]","[",j,"]", matris1[i,j]," ")
         fimpara
         escreval("")
      fimpara
      escreval("Matriz 2: ")
      para i de 1 ate 4 faca
         para j de 1 ate 6 faca
            escreva(" [",i,"]","[",j,"]", matris2[i,j]," ")
         fimpara
         escreval("")
      fimpara
      escreval("Soma das matrizes: ")
      para i de 1 ate 4 faca
         para j de 1 ate 6 faca
            escreva(" [",i,"]","[",j,"]", matris3[i,j]," ")
         fimpara
         escreval("")
      fimpara
      escreval("Diferença das matrizes: ")
      para i de 1 ate 4 faca
         para j de 1 ate 6 faca
            escreva(" [",i,"]","[",j,"]", matris4[i,j]," ")
         fimpara
         escreval("")
      fimpara
   caso 5
      escreva ("Informe o valor de A: ")
      leia (a)
      escreva ("Informe o valor de B: ")
      leia (b)
      escreva ("Informe o valor de C: ")
      leia (c)
      delta := calcula_delta()
      se ( delta < 0 ) entao
         escreva ("Esta equação não possui raízes reais.")
      senao
         se (delta = 0) entao
            x1 := (-b + raizq(delta)) / (2*a)
            escreva ("Esta equação possui apenas uma raiz: ", x1)
         senao
            x1 := (-b + raizq(delta)) / (2*a)
            x2 := (-b - raizq(delta)) / (2*a)
            escreva ("Esta equação possui duas raízes: ", x1, " e ", x2)
         fimse
      fimse
      escreval("Aqui é feito um cálculo do delta usando sub-rotina e caso o delta for")
      escreval("menor que 0 não possui raízes reais, caso seja  igual a 0 possui uma raiz")
      escreval("caso seja maior que 0 possui mais de uma raiz")
   fimenquanto
Fimalgoritmo

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá.

 

  1. você colocou uma função dentro do programa principal (entre o inicio/fimAlgoritmo), não pode;
  2. faltou finalizar o escolha/caso com o fimEscolha;


Outros pontos:

  1. ao utilizar "sub-rotinas", é preferível NÃO utilizar variável globais. Ou passa por parâmetro, ou declara dentro da função/procedimento, no caso faltou passar por parâmetro;
  2. quando o delta é igual a 0, terá "duas raízes reais e iguais" (e não uma só);
  3. para equações do segundo grau, é obrigatório validar o valor de A. Ele não pode ser igual a zero (é, ou não é?);
  4. ainda nas equações quadráticas, seria interessante, antes do resultado, mostrar a equação montada e o seu delta.
  5. o item 4 não tem explicação (assim como os outros)

 

Fiz alguns das principais alterações. Sugiro que dar uma comparada e vá realterando o teu próprio código.

 

algoritmo "FCdH"
// Disciplina  :
// Professor   :
// Descrição   :
// Autor(a)    : Irwing Seiji Ato
// Data atual  : 13/06/2019
var
   {opcao: inteiro} //prefira utilizar um char [Simon.Viegas]
   opcao  :caractere
   altura :real
   total  :real
   sexo   :caractere
   id     :inteiro
   cont   :inteiro
   tp     :inteiro
   num    :vetor [1..3] de real
   matris1, matris2, matris3, matris4 :vetor[1..4, 1..6] de real
   i,j    :inteiro
   a, b, c:real
   delta  :real
   x1, x2 :real

   parar  :caractere //usado apenas para fazer o programa aguardar um ENTER

funcao calcula_delta(a, b, c :real): real
var
   delta : real
inicio
   delta := b*b - 4*a*c
   retorne delta
fimFuncao

inicio
   opcao <- "1"
   enquanto (opcao <> "0") faca
      LimpaTela()
      escreval("Escolha a opção desejada")
      escreval("1 - Condição (SE, SENAO)")
      escreval("2 - Repetição (Para OU Enquanto)")
      escreval("3 - Vetor")
      escreval("4 - Matriz")
      escreval("5 - Sub-rotina")
      escreval("0 - Sair")
      leia(opcao)

      escolha opcao

      caso "0"
         escreval("Obrigado e tenho um bom dia")
         {interrompa} //não precisa/deve [Simon.Viegas]

      caso "1"
         escreval("Digite sua altura:")
         leia(altura)
         escreval("Digite aqui se você é homem ou mulher sem abreviação e tudo minúsculo:")
         leia(sexo)
         se (sexo = "homem") entao
            escreval("Sexo Masculino, Altura:", altura)
            total <- (72.7*altura)-58
            escreval("Seu peso ideal é:", total)
         senao
            se (sexo = "mulher") entao
               escreval("Sexo Feminino, Altura:", altura)
               total <- (62.1*altura)-44.7
               escreval("Seu peso ideal é:", total)
            fimSe
         fimSe
         escreval()
         escreval("Neste algoritmo foi feito o cálculo do peso ideal caso fosse homem")
         escreval("é feita uma conta caso seja mulher irá fazer outra conta com outros valores")

      caso "2"
         cont <- 0
         tp <- 0 //faltou inicializar [Simon.Viegas]
         enquanto (cont <= 10) faca
            cont <- cont+1
            escreval("Digite a idade da", cont, " pessoa: ")
            leia(id)
            se(id >= 18) entao
               tp <- tp+1
            fimSe
         fimEnquanto
         escreval("O total de pessoas com idade maior ou igual a 18 são:", tp)
         escreval()
         escreval("Aqui foi contada quantas pessoas tinham idade superior ou igual a 18")
         escreval("utilizando um enquanto e somando a cada pessoa adicionado até o contador ser igual a 10")

      caso "3"
         para cont de 1 ate 3 faca
            escreval("Digite um número")
            leia(num[cont])
            se (num[cont] < 0) entao
               num[cont] <- 0
            fimSe
         fimPara
         para cont de 1 ate 3 faca
            escreval("O número",num[cont])
         fimPara
         escreval()
         escreval("Aqui foi feito um um algoritmo que armazena em um vetor e caso o número seja menor negativo")
         escreval("ele é substituído pelo 0")

      caso "4"
         para i de 1 ate 4 faca
            para j de 1 ate 6 faca
               escreval("Matriz 1: [",i,"]","[",j,"]")
               leia(matris1[i,j])
            fimPara
         fimPara
         para i de 1 ate 4 faca
            para j de 1 ate 6 faca
               escreval("Matriz 2: [",i,"]","[",j,"]")
               leia(matris2[i,j])
            fimPara
         fimPara
         para i de 1 ate 4 faca
            para j de 1 ate 6 faca
               matris3[i,j] <- matris1[i,j] + matris2[i,j]
            fimPara
         fimPara
         para i de 1 ate 4 faca
            para j de 1 ate 6 faca
               matris4[i,j] <- matris1[i,j] - matris2[i,j]
            fimPara
         fimPara
         escreval("Matriz 1: ")
         para i de 1 ate 4 faca
            para j de 1 ate 6 faca
               escreva(" [",i,"]","[",j,"]", matris1[i,j], " ")
            fimPara
            escreval("")
         fimPara
         escreval("Matriz 2: ")
         para i de 1 ate 4 faca
            para j de 1 ate 6 faca
               escreva(" [",i,"]","[",j,"]", matris2[i,j], " ")
            fimPara
            escreval("")
         fimPara
         escreval("Soma das matrizes: ")
         para i de 1 ate 4 faca
            para j de 1 ate 6 faca
               escreva(" [",i,"]","[",j,"]", matris3[i,j], " ")
            fimPara
            escreval("")
         fimPara
         escreval("Diferença das matrizes: ")
         para i de 1 ate 4 faca
            para j de 1 ate 6 faca
               escreva(" [",i,"]","[",j,"]", matris4[i,j], " ")
            fimPara
            escreval("")
         fimPara

      caso "5"
         escreva ("Informe o valor de A: ")
         leia(a)
         escreva ("Informe o valor de B: ")
         leia(b)
         escreva ("Informe o valor de C: ")
         leia(c)
         delta := calcula_delta(a, b, c)
         se (delta < 0 ) entao
            escreval("Esta equação não possui raízes reais.")
         senao
            se (delta = 0) entao
               x1 := (-b + RaizQ(delta)) / (2*a)
               escreval("Esta equação possui apenas uma raiz: ", x1)
            senao
               x1 := (-b + RaizQ(delta)) / (2*a)
               x2 := (-b - RaizQ(delta)) / (2*a)
               escreval("Esta equação possui duas raízes: ", x1, " e ", x2)
            fimSe
         fimSe
         escreval()
         escreval("Aqui é feito um cálculo do delta usando uma sub-rotina. Caso o")
         escreval("delta seja menor que 0, não possuirá raízes reais; caso seja ")
         escreval("igual a 0 possuirá duas raízes reais e iguais; e caso seja maior")
         escreval("que 0 possui duas raizes")
      fimEscolha

      leia(parar)
   fimEnquanto
fimAlgoritmo

 

Qualquer dúvida é só perguntar.

 

No aguardo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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: minicurso “Como ganhar dinheiro montando computadores”

Gabriel TorresGabriel Torres, fundador e editor executivo do Clube do Hardware, acaba de lançar um minicurso totalmente gratuito: "Como ganhar dinheiro montando computadores".

Você aprenderá sobre o quanto pode ganhar, como cobrar, como lidar com a concorrência, como se tornar um profissional altamente qualificado e muito mais!

Inscreva-se agora!