Ir ao conteúdo
  • Cadastre-se

Portugol Algoritmo Bhaskara em Portugol


Posts recomendados

O professor pediu um algorítmico que calcule função de segundo grau por Bhaskara, porém o meu está dando resultados errados. Alguém pode dar uma olhada?

 

programa
{
    inclua biblioteca Matematica --> mat
    
    real a,b,c,x1,x2, delta, b2
    funcao inicio()
    {
        escreva("Digite o valor de [a]", "\n")
        leia (a)
        escreva("Digite o valor de B ", "\n")
        leia (b)
        escreva("Digite o valor de [c]", "\n")
        leia (c)
        b2 = b*b
        delta = b2-(4*a*c)
        se(delta<0 ou (2*a)==0)
        {
            escreva("Impossível Calcular", "\n") 
        }
        senao
        {
        x1 = -b + (Matematica.raiz(delta, 2)) / (2*a)
        x2 = -b - (Matematica.raiz(delta, 2)) / (2*a)
        escreva("X1 = ", x1, "\n")
        escreva("X2 = ", x2, "\n")
        }
    }
}

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Bhaskara.

Depois de aprendi nunca mais esqueci.

Vou dar uma olhada.

 

@Gabriel Schumacher

Faltou só parênteses nos cálculos de x1 e x2

x1 = (-b + (Matematica.raiz(delta, 2))) / (2*a)
x2 = (-b - (Matematica.raiz(delta, 2))) / (2*a)

Da forma que você fez, ele deve estar dividindo antes de fazer +-

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

  • 2 anos depois...
  • Membro VIP
20 horas atrás, Daniel Carro disse:

Errado

x1 = -b + (Matematica.raiz(delta, 2)) / (2*a)

x2 = -b - (Matematica.raiz(delta, 2)) / (2*a)

 

Certo

x1 = -b + (mat.raiz(delta, 2.0)) / (2*a)

x2 = -b - (mat.raiz(delta, 2.0)) / (2*a)

 

De fato... faria mais sentido utilizar o mat que o Matematica, mas na prática tanto faz. O primeira seria apenas um "apelido" do outro.

 

Em relação a fórmula de Bhaskara, a expressão está incompleta. Pois está dividindo antes de adicionar... Seria algo assim:

(-b + mat.raiz(delta, 2.0)) / (2*a)

e

(-b - mat.raiz(delta, 2.0)) / (2*a)

"menos b mais ou menos a raiz de Delta, tudo isto dividido por dois a".

 

Segue código com correções:

programa
{
    inclua biblioteca Matematica --> mat
    
    real a, b, c, x1, x2, delta
    
    funcao inicio()
    {
        escreva("Digite o valor de [a]", "\n")
        leia (a)
        escreva("Digite o valor de [B]", "\n")
        leia (b)
        escreva("Digite o valor de [c]", "\n")
        leia (c)
        delta = mat.potencia(b, 2.0) - (4*a*c)
        escreva("Delta = ", delta, "\n")
        
        se ((delta < 0) ou (a==0))
        {
            escreva("Impossível Calcular", "\n") 
        }
        senao
        {
            x1 = (-b + mat.raiz(delta, 2.0)) / (2*a)
            x2 = (-b - mat.raiz(delta, 2.0)) / (2*a)
            escreva("X1 = ", x1, "\n")
            escreva("X2 = ", x2, "\n")
        }
    }
}

 

 

 

Link para o comentário
Compartilhar em outros sites

  • 1 ano depois...

Olá, bom, aqui está:

 

algoritmo "Bhaskara"
var
   nA, nB, nC: Real
   Delta: Real
   Delta2: Real
   Delta3: Real
   X1_1: Real
   X1_2: Real
   X2_1: Real
   X2_2: Real
   Valor4 : Real
inicio
   Escreval("Informe um número A:")
   Leia(nA)
   Escreval("O número escolhido foi",nA)

   Escreval("")

   Escreval("Informe um número B:")
   Leia(nB)
   Escreval("O número escolhido foi",nB)

   Escreval("")

   Escreval("Informe um número C:")
   Leia(nC)
   Escreval("O número escolhido foi",nC)
   Escreval("")
   Escreval("Resultados:")
   Escreval("")

   Valor4 <- 4
   Delta <- Exp(nB, 2)
   Delta2 <- (Delta - 4)
   Delta3 <- (Delta2 * nA * nC)
   Escreval("Delta:",Delta3)

   Escreval("")

   X1_1 <- (-nB + RaizQ(Delta3))
   X1_2 <- (X1_1 / 2 * nA)

   Escreval("x1:",X1_2)

   X2_1 <- (-nB - RaizQ(Delta3))
   X2_2 <- (X2_1 / 2 * nA)

   Escreval("x2:",X2_2)
fimalgoritmo

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

@VedZinn, só alguns pontos:

 

Apesar do código ficar bom, esse tópico seria para Portugol Studio, mas o seu código está para VisualG... eles possuem sintaxe distintas... mas tá valendo. :D

 

 

Em relação ao código... é recomendável manter o código semântico... no caso, na fórmula de Bhaskara não existe o conceito de "Delta 2" e "Delta 3"... Só tem um Delta e pronto.

 

Outro ponto é que o que estaria se procurando era o valor de "Delta", e não de "Delta 3"... se fosse o caso, a resposta final ficaria na variável Delta.

 

Segue o trecho:

12 horas atrás, VedZinn disse:
   Delta <- Exp(nB, 2)
   Delta2 <- (Delta - 4)
   Delta3 <- (Delta2 * nA * nC)
   Escreval("Delta:",Delta3)
data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

 

Basta efetuar a conta diretamente:

   delta <- Exp(nB, 2) - 4*nA*nC
   escrevaL("Delta: ", delta:1:3)

 

 

 

Sobre:

12 horas atrás, VedZinn disse:
Valor4 <- 4

 

Essa variável não faz sentido e não está sendo utilizada... basta apagar do código.

 

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