Jump to content
progster

[Resolvido] Iniciante Java I

Recommended Posts

progster

Boa noite,

Venho mais uma vez solicitar a vossa ajuda. É o seguinte, num programa para calcular a formula resolvente está a dar-me o output "NaN".

Depois de uma pesquisa, sei agora que "NaN", quer dizer "Not a number". Até aqui tudo bem, continuei a pesquisar e salvo induzido em erro pela informação que encontrei, isto acontece porque o intervalo de valores da variável é limitado, ou então... (raizes negativas).

Como é que eu posso "contornar" isto, ou seja, como é que posso colocar o programa a dar-me um valor especifico?.

package fresolvente;
public class FResolvente {
public static void main(String[] args)
{
 double a,b,c=0;
 double num1,num2,num3;

 System.out.print ("Introduza o valor de a");
 a=Le.umDouble();
 System.out.print ("Introduza o valor de b");
 b=Le.umDouble();
 System.out.print ("Introduza o valor de c");
 c=Le.umDouble();

 num1=Math.sqrt((b*b)-(4*a*c));
 System.out.print("A raiz quadrda de (b*b)-(4*a*c) é:"+num1);
 num1=Le.umDouble();

 num2=(-b-num1)/(2*a);
 num2=Le.umDouble();

 num3=(-b+num1)/(2*a);
 num3=Le.umDouble();	

 System.out.print ("As raizes da equação são:"+num2+"e"+num3);
}
}

P.s.: Durante a pesquisa, encontrei alguns comentários onde se fala em conversão para BigDecimal etc,etc,etc, mas como ainda estou no inicio venho pedir a vossa ajuda para tentar compreender esta situação.

Agradeço desde já, qualquer ajuda que me possam dar.

Cumprimentos.

Edited by Rui Carlos

Não resolvo dúvidas por PM.

Share this post


Link to post
Share on other sites
KTachyon

Se b*b < 4*a*c, o que acontece? Ou se a == 0? ;)

(Bem, tecnicamente já te estou a dar a resolução para o teu problema)

Edited by KTachyon

“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
thoga31

Desde já eu não programo em Java. Contudo, posso apontar uns conselhos: tens de controlar o input e o output. Primeiro, se o factor A é não nulo, e depois se o discriminante é positivo ou nulo.

Aqui estou a supor que le.umDouble() está bem implementado (situação que desconheço).

Boa sorte ;)

Edited by thoga31

Knowledge is free!

Share this post


Link to post
Share on other sites
progster

Se b*b < 4*a*c, o que acontece? Ou se a == 0? ;)

(Bem, tecnicamente já te estou a dar a resolução para o teu problema)

Bem..., nem era uma questão de programação.

Já me dá um valor e não o "NaN".

Desde já eu não programo em Java. Contudo, posso apontar uns conselhos: tens de controlar o input e o output. Primeiro, se o factor A é não nulo, e depois se o discriminante é positivo ou nulo.

Aqui estou a supor que le.umDouble() está bem implementado (situação que desconheço).

Boa sorte ;)

Tens razão. Devia ter testado para valores diferentes.

Obrigado a ambos, pela ajuda e paciência :) dispensadas.

Peço desculpa pelas "barbaridades" que no futuro for aqui colocando, mas se não for assim..., não aprendo.


Não resolvo dúvidas por PM.

Share this post


Link to post
Share on other sites
thoga31

Não são barbaridades. São consequências saudáveis de um processo de aprendizagem ;)

Dispõe sempre que precisares.

Boa sorte.


Knowledge is free!

Share this post


Link to post
Share on other sites
KTachyon

Só mais um à parte. A formula resolvente foi feita para equações de segundo grau. Se a for zero, sabes logo à partida que não se trata de uma equação de segundo grau. Ou seja, podes filtrar imediatamente o input do utilizador e dizer-lhe que a equação não é de segundo grau, mal ele preencha o valor de a.

Para os restantes casos são sempre equações de segundo grau, mas algumas não têm solução Real. Mas podes tentar resolver o problema devolvendo uma solução Complexa. Não é assim tão difícil quanto isso:

Se b*b < 4*a*c fazes os cálculos para

X = -b / 2*a

Y = sqrt(4*a*c - b*b) / 2*a

e apresentas como solução X ± Yi.

Edited by KTachyon

“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
progster

E em vez do "NaN", já me dá um valor certo?

Podes explicar o que queres dizer com: "X ± Yi" ?


Não resolvo dúvidas por PM.

Share this post


Link to post
Share on other sites
thoga31

Podes explicar o que queres dizer com: "X ± Yi" ?

Isto é matemática. Procura por números complexos ou imaginários.

A base do conjunto imaginário é que i2 = -1. Como deves reparar, isto não é possível no conjunto real: não há nenhum número real que elevado ao quadrado dê um número negativo. i é, então, a base das bases dos números imaginários.

Pesquisa ;)


Knowledge is free!

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.