Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Jacqueline Santos

VisualG Problema com visualg dando "Invalid floating point operation"

Recommended Posts

Gente comecei a estudar programação faz uma semana e estava fazendo uns exercícios, mas esse da fórmula de bhaskara está dando "Invalid floating point operation" na hora de executar, como não estou conseguindo achar o erro queria pedir ajuda de vocês. Desde já agradeço.

IMG_20171022_170005397_HDR.jpg

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Jacqueline Santos     ele está dando esse erro por que,   o visualg não consegue calcular raiz quadrada de números negativos,  então no seu código você precisa colocar essa instrução :

rz:=raizq(abs(delta))

para que,  se o número for negativo ele faz o cálculo como se fosse positivo mesmo ou seja ele ignora o sinal que esteja antes do número .   então seu código ficaria assim :

algoritmo "bhaskara"
var
  a,b,c,x1,x2,yv,xv,delta,rz : real
inicio
  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 <- b^2 - 4*a*c
  rz:=raizq(abs(delta))
  x1 := (-b)+rz/2*a
  x2 := (-b)-rz/2*a
  escreval("-----------------------------")
  escreval("o valor de delta é: ",delta)
  escreval("-----------------------------")
  escreval("o valor de x1 e x2 é: ",x1,x2)
  escreval("----------------------------")
  escreval("parabola")
  yv := ((delta)/4*a)
  xv := ((-b)-2*a)
  escreval("o valor do vértice é: ",yv)
  escreval("o valor do vértice é: ",xv)
fimalgoritmo

assim ele compila e mostra os resultados normalmente, no entanto estou sem tempo para calcular o resultado para ver se está certo, veja aí se confere.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
 

Olá a todos.

 

@Jacqueline Santos, por favor, edite sua postagem anterior e substitua a imagem do código pelo texto do código, ou seja, basta copiar o algoritmo do Visualg, clicar no botão CODE (<>) e colar o código. Dessa forma, fica mais fácil, para nós contribuidores, analisar o código e/ou testar no compilador.

 

 

 

@devair1010 e @Jacqueline Santos, alguns pontos:

 

Em 22/10/2017 às 22:12, devair1010 disse:

@Jacqueline Santos ele está dando esse erro por que,  o visualg não consegue calcular raiz quadrada de números negativos

Creio que seja isso mesmo, mas veja, para o mundo dos reais de fato não existe raiz quadrada de número negativo, ou seja, o que pode está errado é o algoritmo, não a conta.

 

Em 22/10/2017 às 22:12, devair1010 disse:

[...] então no seu código você precisa colocar essa instrução :


rz:=raizq(abs(delta))

para que,  se o número for negativo ele faz o cálculo como se fosse positivo mesmo ou seja ele ignora o sinal que esteja antes do número .


Vejam, a fórmula de Bhaskara utiliza a "raiz de Delta", não "a raiz do módulo de Delta". Vai acabar sendo uma conta diferente e poderá resultar uma resposta incorreta.

 

O foco geral do problema está na "Fórmula de Bhaskara", correto?. Já o "problema citado" consta na parte do cálculo da Discriminante (Delta), veja uma definição sobre ela:

Citação

Discriminante é a expressão presente dentro da raiz na fórmula de Bhaskara. É comumente representado pela letra grega Δ (Delta) e recebe esse nome pelo fato de discriminar os resultados de uma equação da seguinte maneira:

 

Δ < 0, então a equação não possui resultados reais;
Δ = 0, então a equação possui apenas um resultado real ou possui dois resultados iguais (essas duas afirmações são equivalentes);
Δ > 0, então a equação possui dois resultados distintos reais.

 

Portanto, para calcular as raízes de uma equação do segundo grau, primeiramente calcule o valor numérico de Δ.

Fonte: http://brasilescola.uol.com.br/matematica/formula-bhaskara.htm

 

Logo, é necessário verificar o valor de Delta antes de efetuar a conta e tomar a devidas providência para cada caso. (poderia usar se para cada possibilidade)

 

 

No aguardo.

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

O erro "Invalid floating point operation" no caso da raiz quadrada é em razão da disposição do calculo. Basta na verificação do delta<0, não verificar as raízes, pois o visual ao calcula-las com o delta negativo retorna o erro.

 

Veja um exemplo:

Algoritmo "Raiz quadrada"
// Disciplina  :  [Linguagem e Lógica de Programação]
// Professor   :  Edgar Ribeiro
// Descrição:
// Desenvolver um algoritmo que leia os coeficientes (a , b e c) de uma equação
// do segundo grau e calcule suas raízes. O programa deve mostrar, quando
// possível, o valor das raízes calculadas e a classificação das raízes.
// Autor(a)    : xxxx
// Data atual  : 26/01/2018
Var
   // Seção de Declarações das variáveis
   a, b, c, delta, x1, x2 : real
Inicio
   // Seção de Comandos, procedimento, funções, operadores, etc...
   Escreva ("Informe os coeficientes a,b e c, da equação: ")
   Leia (a)
   Leia (b)
   Leia (c)
   delta <- (exp(-b,2)- 4*a*c)
   se delta = 0 então
      x1 <- (-b + raizQ(delta))/(2 * a)
      x2 <- (-b - raizQ(delta))/(2 * a)
      Escreva ("A equação possui raizes reais iguais: X1=X2 = ",x1)
   senao
      se delta > 0 então
         x1 <- (-b + raizQ(delta))/(2 * a)
         x2 <- (-b - raizQ(delta))/(2 * a)
         Escreva ("A equação possui duas raizes reais distintas: X1=",x1, " e X2=",x2)
      senao
         se delta < 0 então
            Escreva ("A equação não possui raizes reais")
         fimse
      fimse
   fimse
Fimalgoritmo

 

Editado por Simon Viegas
Inserir tag CODE e remoção de exceço de formatação
  • Curtir 1

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






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

×