Ir ao conteúdo

Posts recomendados

Postado

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

 

  • Membro VIP
Postado

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.

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!