[Resolvido] Algoritmo para Calcular Raiz da equaçao de bháskara  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
olivercld
JavaGuru
[Avatar]

Membro desde: 21/09/2010 16:06:58
Mensagens: 207
Offline

Bom dia, bom fazendo este algoritmo aqui para efetue o cálculo das raízes da equação de báscara obtive este resultado no algoritmo de forma simples, alguem poderia analizar e dizer com suas palavras se tem algo errado se poderia estar fazendo de forma diferente ? e me passar uma explicaçao mais formal que a minha caso esteja errado.

This message was edited 1 time. Last update was at 15/10/2011 14:02:27


Todos os seus fracassos não são capazes de lhe impedir de sonhar mais uma vez e calar a boca daqueles que duvidam de sua capacidade.
#GV
[WWW] [MSN]
gomesrod
GUJ Ranger
[Avatar]

Membro desde: 11/05/2007 19:46:22
Mensagens: 901
Offline

No cálculo mesmo só tem um probleminha, x1 e x2 estão iguais.

deveria ser:
x1 = (float) ((-b + Math.sqrt(delta)) / (2 * a));
x2 = (float) ((-b - Math.sqrt(delta)) / (2 * a));



Fora isso, nao é preciso instanciar um novo Scanner a cada valor lido. É só instanciar uma vez e ir chamando o nextFloat.
Ou melhor ainda, chamar o nextLine() , que retorna a linha digitada até o "enter". Vem como string, e aí vc converte para Float. Dessa forma se tem mais controle sobre os dados em formato incorreto.

EDIT:

Ah, também esqueci de mencionar outro erro no cálculo: delta pode ser igual a zero também, só não pode ser negativo. Nesse caso as duas raizes serão iguais, pois sqrt(delta) é igual a zero.

This message was edited 1 time. Last update was at 14/10/2011 11:58:35

olivercld
JavaGuru
[Avatar]

Membro desde: 21/09/2010 16:06:58
Mensagens: 207
Offline

tinha esquecido essa questão :
x1 = (float) ((-b + Math.sqrt(delta)) / (2 * a)); // soma
x2 = (float) ((-b - Math.sqrt(delta)) / (2 * a)); // subtrai

Ah, também esqueci de mencionar outro erro no cálculo: delta pode ser igual a zero também, só não pode ser negativo. Nesse caso as duas raizes serão iguais, pois sqrt(delta) é igual a zero.

essa questao estava se referindo porque faltou o >=, if (delta >= 0) .

Só nao entendi o que disse aqui sobre:

Fora isso, nao é preciso instanciar um novo Scanner a cada valor lido. É só instanciar uma vez e ir chamando o nextFloat.
Ou melhor ainda, chamar o nextLine() , que retorna a linha digitada até o "enter". Vem como string, e aí vc converte para Float.

quis referir desta forma:


Todos os seus fracassos não são capazes de lhe impedir de sonhar mais uma vez e calar a boca daqueles que duvidam de sua capacidade.
#GV
[WWW] [MSN]
gomesrod
GUJ Ranger
[Avatar]

Membro desde: 11/05/2007 19:46:22
Mensagens: 901
Offline

O que eu quis dizer é que não precisa ficar criando outro Scanner para cada input. Assim:

Igual, só que aproveitando o mesmo scanner. Ele não é um objeto descartável, utilize o mesmo enquanto houver algo para ler. Também troquei o println por print só para ficar mais bonitinho, assim os dados são digitados na mesma linha da pergunta.

Sobre usar o nextLine(), deixa pra lá por enquanto, era frescura minha rsrs
Era para permitir um tratamento caso o usuário digite dados incorretos (vc já viu o que acontece? Estoura uma InputMismatchException, bem pouco amigável), mas dá para fazer um tratamento simples assim mesmo, basta colocar um try/catch:
davidbuzatto
Moderador
[Avatar]

Membro desde: 07/08/2004 23:47:57
Mensagens: 4013
Localização: Vargem Grande do Sul - SP
Offline

Se "a" for igual a zero você não tem uma equação do segundo grau.
Ah, outra coisa. É método ou fórmula de Bhaskara, não equação de Bhaskara. A equação é do segundo grau ou equação quadrática.

[]'s

This message was edited 2 times. Last update was at 14/10/2011 14:37:28


Seja educado. Agradeça quem te ajudou. Não custa nada.
Dúvidas de Java? Utilize o fórum! Não respondo via MP.

"Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Fowler)
"A vida é um escândalo, e no final dá sempre errado. O que humaniza o homem é o fracasso."

http://davidbuzatto.com.br | GitHub | uHunt | CV Lattes | Last.fm
[WWW]
olivercld
JavaGuru
[Avatar]

Membro desde: 21/09/2010 16:06:58
Mensagens: 207
Offline

ok entendido gomesrod sobre a questao que voçe disse agora, sobre try e catch, eu so nao sabia usa-la valeu pela explicação.


nao entendi davidbuzatto


Se "a" for igual a zero você não tem uma equação do segundo grau.
Ah, outra coisa. É método ou fórmula de Bhaskara, não equação de Bhaskara. A equação é do segundo grau ou equação quadrática.


fiz de acordo com enunciado veja:

Desenvolva um algoritmo que leia 3 valores inteiros e efetue o cálculo das
raízes da equação de báscara. Se não foi possível calcular as raízes, mostre
uma mensagem correspondente. Obs.: não é possível divisão por 0 (zero) e raiz
quadrada de número negativo;


pelo jeito aqui e formula para calcular e é uma equação do 2º.

Todos os seus fracassos não são capazes de lhe impedir de sonhar mais uma vez e calar a boca daqueles que duvidam de sua capacidade.
#GV
[WWW] [MSN]
tnaires
GUJ Master
[Avatar]

Membro desde: 22/12/2003 08:05:58
Mensagens: 1678
Localização: Porto Alegre/RS - Natal/RN
Offline

olivercld wrote:nao entendi davidbuzatto


Se "a" for igual a zero você não tem uma equação do segundo grau.
Ah, outra coisa. É método ou fórmula de Bhaskara, não equação de Bhaskara. A equação é do segundo grau ou equação quadrática.


fiz de acordo com enunciado veja:

Desenvolva um algoritmo que leia 3 valores inteiros e efetue o cálculo das
raízes da equação de báscara. Se não foi possível calcular as raízes, mostre
uma mensagem correspondente. Obs.: não é possível divisão por 0 (zero) e raiz
quadrada de número negativo;


pelo jeito aqui e formula para calcular e é uma equação do 2º.

Rode seu programa, digite 0 quando o programa pedir o valor para a e veja o que acontece. Aí você entenderá o que o davidbuzatto quis dizer.

Para que a equação do tipo ax² + bx + c = 0 seja do segundo grau, o valor de a deve ser maior que zero. Seu programa deve testar essa condição.

Tarso Nunes Aires

Blog - http://cabritin.wordpress.com/
Delicious - http://delicious.com/tnaires
Twitter - @tnaires

olivercld
JavaGuru
[Avatar]

Membro desde: 21/09/2010 16:06:58
Mensagens: 207
Offline

tnaires fiz como me disse, nao sei se e desta forma, tirei o try e catch


so nao sei como fazer ao invez de encerrar voltar ´para digitar o valor de A novamente

é dessa forma ou não ?

Todos os seus fracassos não são capazes de lhe impedir de sonhar mais uma vez e calar a boca daqueles que duvidam de sua capacidade.
#GV
[WWW] [MSN]
davidbuzatto
Moderador
[Avatar]

Membro desde: 07/08/2004 23:47:57
Mensagens: 4013
Localização: Vargem Grande do Sul - SP
Offline

tnaires wrote:Para que a equação do tipo ax² + bx + c = 0 seja do segundo grau, o valor de a deve ser maior que zero. Seu programa deve testar essa condição.


O coeficiente "a" deve ser diferente de 0.

Não pode ser zero pois se a = 0, então tem-se:
0x² + bx + c = 0 =>
bx + c = 0 (equação do primeiro grau).

Se aplicarmos o método de Bhaskara para a = 0, temos uma divisão por zero.

[]'s

Seja educado. Agradeça quem te ajudou. Não custa nada.
Dúvidas de Java? Utilize o fórum! Não respondo via MP.

"Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Fowler)
"A vida é um escândalo, e no final dá sempre errado. O que humaniza o homem é o fracasso."

http://davidbuzatto.com.br | GitHub | uHunt | CV Lattes | Last.fm
[WWW]
olivercld
JavaGuru
[Avatar]

Membro desde: 21/09/2010 16:06:58
Mensagens: 207
Offline

entendido so equação do 2º se for assim ax² + bx + c = 0 , bom davidbuzatto então eu posso deixar dessa forma: assim ela quando digito 0 para A nao aceita.

só lembrando não e trabalho não e só para praticar mesmo agradeço a grande ajuda que vocês estão dando.

Todos os seus fracassos não são capazes de lhe impedir de sonhar mais uma vez e calar a boca daqueles que duvidam de sua capacidade.
#GV
[WWW] [MSN]
tnaires
GUJ Master
[Avatar]

Membro desde: 22/12/2003 08:05:58
Mensagens: 1678
Localização: Porto Alegre/RS - Natal/RN
Offline

davidbuzatto wrote:
tnaires wrote:Para que a equação do tipo ax² + bx + c = 0 seja do segundo grau, o valor de a deve ser maior que zero. Seu programa deve testar essa condição.


O coeficiente "a" deve ser diferente de 0.

Não pode ser zero pois se a = 0, então tem-se:
0x² + bx + c = 0 =>
bx + c = 0 (equação do primeiro grau).

Se aplicarmos o método de Bhaskara para a = 0, temos uma divisão por zero.

[]'s

Isso, cometi um engano Quis dizer diferente de zero, mas não vou editar o meu post

This message was edited 1 time. Last update was at 14/10/2011 22:55:02


Tarso Nunes Aires

Blog - http://cabritin.wordpress.com/
Delicious - http://delicious.com/tnaires
Twitter - @tnaires

olivercld
JavaGuru
[Avatar]

Membro desde: 21/09/2010 16:06:58
Mensagens: 207
Offline

Obrigado a vocês...

Todos os seus fracassos não são capazes de lhe impedir de sonhar mais uma vez e calar a boca daqueles que duvidam de sua capacidade.
#GV
[WWW] [MSN]
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team